! function(x, E) {
	var n, e, t, i, c, s, r, l, a, o, d, u, f, p, m, g, h, y, v, b, _, w, T, k, I, S, N, L, B, M, C = x.document,
		P = x.navigator,
		A = x.location,
		F = (c = function(e, t) {
				return new c.fn.init(e, t, n)
			}, s = x.jQuery, r = x.$, l = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, a = /\S/, o = /^\s+/, d = /\s+$/, u = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, f = /^[\],:{}\s]*$/, p = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, m = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, g = /(?:^|:|,)(?:\s*\[)+/g, h = /(webkit)[ \/]([\w.]+)/, y = /(opera)(?:.*version)?[ \/]([\w.]+)/, v = /(msie) ([\w.]+)/, b = /(mozilla)(?:.*? rv:([\w.]+))?/, _ = /-([a-z]|[0-9])/gi, w = /^-ms-/, T = P.userAgent, k = Object.prototype.toString, I = Object.prototype.hasOwnProperty, S = Array.prototype.push, N = Array.prototype.slice, L = String.prototype.trim, B = Array.prototype.indexOf, M = {}, c.fn = c.prototype = {
				constructor: c,
				init: function(e, t, n) {
					var i, s, r, a;
					if (!e) return this;
					if (e.nodeType) return this.context = this[0] = e, this.length = 1, this;
					if ("body" === e && !t && C.body) return this.context = C, this[0] = C.body, this.selector = e, this.length = 1, this;
					if ("string" != typeof e) return c.isFunction(e) ? n.ready(e) : (e.selector !== E && (this.selector = e.selector, this.context = e.context), c.makeArray(e, this));
					if (!(i = "<" === e.charAt(0) && ">" === e.charAt(e.length - 1) && 3 <= e.length ? [null, e, null] : l.exec(e)) || !i[1] && t) return !t || t.jquery ? (t || n)
						.find(e) : this.constructor(t)
						.find(e);
					if (i[1]) return a = (t = t instanceof c ? t[0] : t) ? t.ownerDocument || t : C, (r = u.exec(e)) ? c.isPlainObject(t) ? (e = [C.createElement(r[1])], c.fn.attr.call(e, t, !0)) : e = [a.createElement(r[1])] : e = ((r = c.buildFragment([i[1]], [a]))
							.cacheable ? c.clone(r.fragment) : r.fragment)
						.childNodes, c.merge(this, e);
					if ((s = C.getElementById(i[2])) && s.parentNode) {
						if (s.id !== i[2]) return n.find(e);
						this.length = 1, this[0] = s
					}
					return this.context = C, this.selector = e, this
				},
				selector: "",
				jquery: "1.7.2",
				length: 0,
				size: function() {
					return this.length
				},
				toArray: function() {
					return N.call(this, 0)
				},
				get: function(e) {
					return null == e ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
				},
				pushStack: function(e, t, n) {
					var i = this.constructor();
					return c.isArray(e) ? S.apply(i, e) : c.merge(i, e), i.prevObject = this, i.context = this.context, "find" === t ? i.selector = this.selector + (this.selector ? " " : "") + n : t && (i.selector = this.selector + "." + t + "(" + n + ")"), i
				},
				each: function(e, t) {
					return c.each(this, e, t)
				},
				ready: function(e) {
					return c.bindReady(), t.add(e), this
				},
				eq: function(e) {
					return -1 == (e = +e) ? this.slice(e) : this.slice(e, e + 1)
				},
				first: function() {
					return this.eq(0)
				},
				last: function() {
					return this.eq(-1)
				},
				slice: function() {
					return this.pushStack(N.apply(this, arguments), "slice", N.call(arguments)
						.join(","))
				},
				map: function(n) {
					return this.pushStack(c.map(this, function(e, t) {
						return n.call(e, t, e)
					}))
				},
				end: function() {
					return this.prevObject || this.constructor(null)
				},
				push: S,
				sort: [].sort,
				splice: [].splice
			}, c.fn.init.prototype = c.fn, c.extend = c.fn.extend = function() {
				var e, t, n, i, s, r, a = arguments[0] || {},
					l = 1,
					o = arguments.length,
					d = !1;
				for ("boolean" == typeof a && (d = a, a = arguments[1] || {}, l = 2), "object" == typeof a || c.isFunction(a) || (a = {}), o === l && (a = this, --l); l < o; l++)
					if (null != (e = arguments[l]))
						for (t in e) n = a[t], a !== (i = e[t]) && (d && i && (c.isPlainObject(i) || (s = c.isArray(i))) ? (r = s ? (s = !1, n && c.isArray(n) ? n : []) : n && c.isPlainObject(n) ? n : {}, a[t] = c.extend(d, r, i)) : i !== E && (a[t] = i));
				return a
			}, c.extend({
				noConflict: function(e) {
					return x.$ === c && (x.$ = r), e && x.jQuery === c && (x.jQuery = s), c
				},
				isReady: !1,
				readyWait: 1,
				holdReady: function(e) {
					e ? c.readyWait++ : c.ready(!0)
				},
				ready: function(e) {
					if (!0 === e && !--c.readyWait || !0 !== e && !c.isReady) {
						if (!C.body) return setTimeout(c.ready, 1);
						if ((c.isReady = !0) !== e && 0 < --c.readyWait) return;
						t.fireWith(C, [c]), c.fn.trigger && c(C)
							.trigger("ready")
							.off("ready")
					}
				},
				bindReady: function() {
					if (!t) {
						if (t = c.Callbacks("once memory"), "complete" === C.readyState) return setTimeout(c.ready, 1);
						if (C.addEventListener) C.addEventListener("DOMContentLoaded", i, !1), x.addEventListener("load", c.ready, !1);
						else if (C.attachEvent) {
							C.attachEvent("onreadystatechange", i), x.attachEvent("onload", c.ready);
							var e = !1;
							try {
								e = null == x.frameElement
							} catch (e) {}
							C.documentElement.doScroll && e && H()
						}
					}
				},
				isFunction: function(e) {
					return "function" === c.type(e)
				},
				isArray: Array.isArray || function(e) {
					return "array" === c.type(e)
				},
				isWindow: function(e) {
					return null != e && e == e.window
				},
				isNumeric: function(e) {
					return !isNaN(parseFloat(e)) && isFinite(e)
				},
				type: function(e) {
					return null == e ? String(e) : M[k.call(e)] || "object"
				},
				isPlainObject: function(e) {
					if (!e || "object" !== c.type(e) || e.nodeType || c.isWindow(e)) return !1;
					try {
						if (e.constructor && !I.call(e, "constructor") && !I.call(e.constructor.prototype, "isPrototypeOf")) return !1
					} catch (e) {
						return !1
					}
					var t;
					for (t in e);
					return t === E || I.call(e, t)
				},
				isEmptyObject: function(e) {
					for (var t in e) return !1;
					return !0
				},
				error: function(e) {
					throw new Error(e)
				},
				parseJSON: function(e) {
					return "string" == typeof e && e ? (e = c.trim(e), x.JSON && x.JSON.parse ? x.JSON.parse(e) : f.test(e.replace(p, "@")
						.replace(m, "]")
						.replace(g, "")) ? new Function("return " + e)() : void c.error("Invalid JSON: " + e)) : null
				},
				parseXML: function(e) {
					if ("string" != typeof e || !e) return null;
					var t;
					try {
						x.DOMParser ? t = (new DOMParser)
							.parseFromString(e, "text/xml") : ((t = new ActiveXObject("Microsoft.XMLDOM"))
								.async = "false", t.loadXML(e))
					} catch (e) {
						t = E
					}
					return t && t.documentElement && !t.getElementsByTagName("parsererror")
						.length || c.error("Invalid XML: " + e), t
				},
				noop: function() {},
				globalEval: function(e) {
					e && a.test(e) && (x.execScript || function(e) {
						x.eval.call(x, e)
					})(e)
				},
				camelCase: function(e) {
					return e.replace(w, "ms-")
						.replace(_, D)
				},
				nodeName: function(e, t) {
					return e.nodeName && e.nodeName.toUpperCase() === t.toUpperCase()
				},
				each: function(e, t, n) {
					var i, s = 0,
						r = e.length,
						a = r === E || c.isFunction(e);
					if (n)
						if (a) {
							for (i in e)
								if (!1 === t.apply(e[i], n)) break
						} else
							for (; s < r && !1 !== t.apply(e[s++], n););
					else if (a) {
						for (i in e)
							if (!1 === t.call(e[i], i, e[i])) break
					} else
						for (; s < r && !1 !== t.call(e[s], s, e[s++]););
					return e
				},
				trim: L ? function(e) {
					return null == e ? "" : L.call(e)
				} : function(e) {
					return null == e ? "" : e.toString()
						.replace(o, "")
						.replace(d, "")
				},
				makeArray: function(e, t) {
					var n = t || [];
					if (null != e) {
						var i = c.type(e);
						null == e.length || "string" === i || "function" === i || "regexp" === i || c.isWindow(e) ? S.call(n, e) : c.merge(n, e)
					}
					return n
				},
				inArray: function(e, t, n) {
					var i;
					if (t) {
						if (B) return B.call(t, e, n);
						for (i = t.length, n = n ? n < 0 ? Math.max(0, i + n) : n : 0; n < i; n++)
							if (n in t && t[n] === e) return n
					}
					return -1
				},
				merge: function(e, t) {
					var n = e.length,
						i = 0;
					if ("number" == typeof t.length)
						for (var s = t.length; i < s; i++) e[n++] = t[i];
					else
						for (; t[i] !== E;) e[n++] = t[i++];
					return e.length = n, e
				},
				grep: function(e, t, n) {
					var i = [];
					n = !!n;
					for (var s = 0, r = e.length; s < r; s++) n !== !!t(e[s], s) && i.push(e[s]);
					return i
				},
				map: function(e, t, n) {
					var i, s, r = [],
						a = 0,
						l = e.length;
					if (e instanceof c || l !== E && "number" == typeof l && (0 < l && e[0] && e[l - 1] || 0 === l || c.isArray(e)))
						for (; a < l; a++) null != (i = t(e[a], a, n)) && (r[r.length] = i);
					else
						for (s in e) null != (i = t(e[s], s, n)) && (r[r.length] = i);
					return r.concat.apply([], r)
				},
				guid: 1,
				proxy: function(e, t) {
					if ("string" == typeof t) {
						var n = e[t];
						t = e, e = n
					}
					if (!c.isFunction(e)) return E;

					function i() {
						return e.apply(t, s.concat(N.call(arguments)))
					}
					var s = N.call(arguments, 2);
					return i.guid = e.guid = e.guid || i.guid || c.guid++, i
				},
				access: function(e, t, n, i, s, r, a) {
					var l, o = null == n,
						d = 0,
						u = e.length;
					if (n && "object" == typeof n) {
						for (d in n) c.access(e, t, d, n[d], 1, r, i);
						s = 1
					} else if (i !== E) {
						if (l = a === E && c.isFunction(i), o && (t = l ? (l = t, function(e, t, n) {
							return l.call(c(e), n)
						}) : (t.call(e, i), null)), t)
							for (; d < u; d++) t(e[d], n, l ? i.call(e[d], d, t(e[d], n)) : i, a);
						s = 1
					}
					return s ? e : o ? t.call(e) : u ? t(e[0], n) : r
				},
				now: function() {
					return (new Date)
						.getTime()
				},
				uaMatch: function(e) {
					e = e.toLowerCase();
					var t = h.exec(e) || y.exec(e) || v.exec(e) || e.indexOf("compatible") < 0 && b.exec(e) || [];
					return {
						browser: t[1] || "",
						version: t[2] || "0"
					}
				},
				sub: function() {
					function n(e, t) {
						return new n.fn.init(e, t)
					}
					c.extend(!0, n, this), n.superclass = this, ((n.fn = n.prototype = this())
							.constructor = n)
						.sub = this.sub, n.fn.init = function(e, t) {
							return t && t instanceof c && !(t instanceof n) && (t = n(t)), c.fn.init.call(this, e, t, i)
						}, n.fn.init.prototype = n.fn;
					var i = n(C);
					return n
				},
				browser: {}
			}), c.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(e, t) {
				M["[object " + t + "]"] = t.toLowerCase()
			}), (e = c.uaMatch(T))
			.browser && (c.browser[e.browser] = !0, c.browser.version = e.version), c.browser.webkit && (c.browser.safari = !0), a.test(" ") && (o = /^[\s\xA0]+/, d = /[\s\xA0]+$/), n = c(C), C.addEventListener ? i = function() {
				C.removeEventListener("DOMContentLoaded", i, !1), c.ready()
			} : C.attachEvent && (i = function() {
				"complete" === C.readyState && (C.detachEvent("onreadystatechange", i), c.ready())
			}), c);

	function D(e, t) {
		return (t + "")
			.toUpperCase()
	}

	function H() {
		if (!c.isReady) {
			try {
				C.documentElement.doScroll("left")
			} catch (e) {
				return void setTimeout(H, 1)
			}
			c.ready()
		}
	}
	var j = {};
	F.Callbacks = function(r) {
		function n(e, t) {
			for (t = t || [], i = !r.memory || [e, t], a = s = !0, d = l || 0, l = 0, o = u.length; u && d < o; d++)
				if (!1 === u[d].apply(e, t) && r.stopOnFalse) {
					i = !0;
					break
				} a = !1, u && (r.once ? !0 === i ? p.disable() : u = [] : c && c.length && (i = c.shift(), p.fireWith(i[0], i[1])))
		}
		r = r ? j[r] || function(e) {
			var t, n, i = j[e] = {};
			for (t = 0, n = (e = e.split(/\s+/))
				.length; t < n; t++) i[e[t]] = !0;
			return i
		}(r) : {};
		var i, s, a, l, o, d, u = [],
			c = [],
			f = function(e) {
				var t, n, i, s;
				for (t = 0, n = e.length; t < n; t++) i = e[t], "array" === (s = F.type(i)) ? f(i) : "function" === s && (r.unique && p.has(i) || u.push(i))
			},
			p = {
				add: function() {
					if (u) {
						var e = u.length;
						f(arguments), a ? o = u.length : i && !0 !== i && (l = e, n(i[0], i[1]))
					}
					return this
				},
				remove: function() {
					if (u)
						for (var e = arguments, t = 0, n = e.length; t < n; t++)
							for (var i = 0; i < u.length && (e[t] !== u[i] || (a && i <= o && (o--, i <= d && d--), u.splice(i--, 1), !r.unique)); i++);
					return this
				},
				has: function(e) {
					if (u)
						for (var t = 0, n = u.length; t < n; t++)
							if (e === u[t]) return !0;
					return !1
				},
				empty: function() {
					return u = [], this
				},
				disable: function() {
					return u = c = i = E, this
				},
				disabled: function() {
					return !u
				},
				lock: function() {
					return c = E, i && !0 !== i || p.disable(), this
				},
				locked: function() {
					return !c
				},
				fireWith: function(e, t) {
					return c && (a ? r.once || c.push([e, t]) : r.once && i || n(e, t)), this
				},
				fire: function() {
					return p.fireWith(this, arguments), this
				},
				fired: function() {
					return !!s
				}
			};
		return p
	};
	var O = [].slice;
	F.extend({
		Deferred: function(e) {
			var t, n = F.Callbacks("once memory"),
				i = F.Callbacks("once memory"),
				s = F.Callbacks("memory"),
				r = "pending",
				a = {
					resolve: n,
					reject: i,
					notify: s
				},
				l = {
					done: n.add,
					fail: i.add,
					progress: s.add,
					state: function() {
						return r
					},
					isResolved: n.fired,
					isRejected: i.fired,
					then: function(e, t, n) {
						return o.done(e)
							.fail(t)
							.progress(n), this
					},
					always: function() {
						return o.done.apply(o, arguments)
							.fail.apply(o, arguments), this
					},
					pipe: function(e, t, n) {
						return F.Deferred(function(r) {
								F.each({
									done: [e, "resolve"],
									fail: [t, "reject"],
									progress: [n, "notify"]
								}, function(e, t) {
									var n, i = t[0],
										s = t[1];
									F.isFunction(i) ? o[e](function() {
										(n = i.apply(this, arguments)) && F.isFunction(n.promise) ? n.promise()
											.then(r.resolve, r.reject, r.notify) : r[s + "With"](this === o ? r : this, [n])
									}) : o[e](r[s])
								})
							})
							.promise()
					},
					promise: function(e) {
						if (null == e) e = l;
						else
							for (var t in l) e[t] = l[t];
						return e
					}
				},
				o = l.promise({});
			for (t in a) o[t] = a[t].fire, o[t + "With"] = a[t].fireWith;
			return o.done(function() {
					r = "resolved"
				}, i.disable, s.lock)
				.fail(function() {
					r = "rejected"
				}, n.disable, s.lock), e && e.call(o, o), o
		},
		when: function(e) {
			var n = O.call(arguments, 0),
				t = 0,
				i = n.length,
				s = new Array(i),
				r = i,
				a = i <= 1 && e && F.isFunction(e.promise) ? e : F.Deferred(),
				l = a.promise();

			function o(t) {
				return function(e) {
					n[t] = 1 < arguments.length ? O.call(arguments, 0) : e, --r || a.resolveWith(a, n)
				}
			}

			function d(t) {
				return function(e) {
					s[t] = 1 < arguments.length ? O.call(arguments, 0) : e, a.notifyWith(l, s)
				}
			}
			if (1 < i) {
				for (; t < i; t++) n[t] && n[t].promise && F.isFunction(n[t].promise) ? n[t].promise()
					.then(o(t), a.reject, d(t)) : --r;
				r || a.resolveWith(a, n)
			} else a !== e && a.resolveWith(a, i ? [e] : []);
			return l
		}
	}), F.support = function() {
		var d, e, t, n, i, s, r, u, a, l, c, f = C.createElement("div");
		if (C.documentElement, f.setAttribute("className", "t"), f.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>", e = f.getElementsByTagName("*"), t = f.getElementsByTagName("a")[0], !e || !e.length || !t) return {};
		i = (n = C.createElement("select"))
			.appendChild(C.createElement("option")), s = f.getElementsByTagName("input")[0], d = {
				leadingWhitespace: 3 === f.firstChild.nodeType,
				tbody: !f.getElementsByTagName("tbody")
					.length,
				htmlSerialize: !!f.getElementsByTagName("link")
					.length,
				style: /top/.test(t.getAttribute("style")),
				hrefNormalized: "/a" === t.getAttribute("href"),
				opacity: /^0.55/.test(t.style.opacity),
				cssFloat: !!t.style.cssFloat,
				checkOn: "on" === s.value,
				optSelected: i.selected,
				getSetAttribute: "t" !== f.className,
				enctype: !!C.createElement("form")
					.enctype,
				html5Clone: "<:nav></:nav>" !== C.createElement("nav")
					.cloneNode(!0)
					.outerHTML,
				submitBubbles: !0,
				changeBubbles: !0,
				focusinBubbles: !1,
				deleteExpando: !0,
				noCloneEvent: !0,
				inlineBlockNeedsLayout: !1,
				shrinkWrapBlocks: !1,
				reliableMarginRight: !0,
				pixelMargin: !0
			}, F.boxModel = d.boxModel = "CSS1Compat" === C.compatMode, s.checked = !0, d.noCloneChecked = s.cloneNode(!0)
			.checked, n.disabled = !0, d.optDisabled = !i.disabled;
		try {
			delete f.test
		} catch (e) {
			d.deleteExpando = !1
		}
		if (!f.addEventListener && f.attachEvent && f.fireEvent && (f.attachEvent("onclick", function() {
					d.noCloneEvent = !1
				}), f.cloneNode(!0)
				.fireEvent("onclick")), (s = C.createElement("input"))
			.value = "t", s.setAttribute("type", "radio"), d.radioValue = "t" === s.value, s.setAttribute("checked", "checked"), s.setAttribute("name", "t"), f.appendChild(s), (r = C.createDocumentFragment())
			.appendChild(f.lastChild), d.checkClone = r.cloneNode(!0)
			.cloneNode(!0)
			.lastChild.checked, d.appendChecked = s.checked, r.removeChild(s), r.appendChild(f), f.attachEvent)
			for (l in {
				submit: 1,
				change: 1,
				focusin: 1
			})(c = (a = "on" + l) in f) || (f.setAttribute(a, "return;"), c = "function" == typeof f[a]), d[l + "Bubbles"] = c;
		return r.removeChild(f), r = n = i = f = s = null, F(function() {
			var e, t, n, i, s, r, a, l, o = C.getElementsByTagName("body")[0];
			o && (a = (l = "padding:0;margin:0;border:") + "0;visibility:hidden;", (e = C.createElement("div"))
				.style.cssText = a + "width:0;height:0;position:static;top:0;margin-top:1px", o.insertBefore(e, o.firstChild), f = C.createElement("div"), e.appendChild(f), f.innerHTML = "<table><tr><td style='" + l + "0;display:none'></td><td>t</td></tr></table>", u = f.getElementsByTagName("td"), c = 0 === u[0].offsetHeight, u[0].style.display = "", u[1].style.display = "none", d.reliableHiddenOffsets = c && 0 === u[0].offsetHeight, x.getComputedStyle && (f.innerHTML = "", (r = C.createElement("div"))
					.style.width = "0", r.style.marginRight = "0", f.style.width = "2px", f.appendChild(r), d.reliableMarginRight = 0 === (parseInt((x.getComputedStyle(r, null) || {
							marginRight: 0
						})
						.marginRight, 10) || 0)), void 0 !== f.style.zoom && (f.innerHTML = "", f.style.width = f.style.padding = "1px", f.style.border = 0, f.style.overflow = "hidden", f.style.display = "inline", f.style.zoom = 1, d.inlineBlockNeedsLayout = 3 === f.offsetWidth, f.style.display = "block", f.style.overflow = "visible", f.innerHTML = "<div style='width:5px;'></div>", d.shrinkWrapBlocks = 3 !== f.offsetWidth), f.style.cssText = "position:absolute;top:0;left:0;width:1px;height:1px;" + a, f.innerHTML = "<div style='position:absolute;top:0;left:0;width:1px;height:1px;padding:0;margin:0;border:5px solid #000;display:block;'><div style='padding:0;margin:0;border:0;display:block;overflow:hidden;'></div></div><table style='position:absolute;top:0;left:0;width:1px;height:1px;padding:0;margin:0;border:5px solid #000;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>", n = (t = f.firstChild)
				.firstChild, i = t.nextSibling.firstChild.firstChild, s = {
					doesNotAddBorder: 5 !== n.offsetTop,
					doesAddBorderForTableAndCells: 5 === i.offsetTop
				}, n.style.position = "fixed", n.style.top = "20px", s.fixedPosition = 20 === n.offsetTop || 15 === n.offsetTop, n.style.position = n.style.top = "", t.style.overflow = "hidden", t.style.position = "relative", s.subtractsBorderForOverflowNotVisible = -5 === n.offsetTop, s.doesNotIncludeMarginInBodyOffset = 1 !== o.offsetTop, x.getComputedStyle && (f.style.marginTop = "1%", d.pixelMargin = "1%" !== (x.getComputedStyle(f, null) || {
						marginTop: 0
					})
					.marginTop), void 0 !== e.style.zoom && (e.style.zoom = 1), o.removeChild(e), r = f = e = null, F.extend(d, s))
		}), d
	}();
	var R = /^(?:\{.*\}|\[.*\])$/,
		q = /([A-Z])/g;

	function $(e, t, n) {
		if (n === E && 1 === e.nodeType) {
			var i = "data-" + t.replace(q, "-$1")
				.toLowerCase();
			if ("string" == typeof(n = e.getAttribute(i))) {
				try {
					n = "true" === n || "false" !== n && ("null" === n ? null : F.isNumeric(n) ? +n : R.test(n) ? F.parseJSON(n) : n)
				} catch (e) {}
				F.data(e, t, n)
			} else n = E
		}
		return n
	}

	function X(e) {
		for (var t in e)
			if (("data" !== t || !F.isEmptyObject(e[t])) && "toJSON" !== t) return !1;
		return !0
	}

	function z(e, t, n) {
		var i = t + "defer",
			s = t + "queue",
			r = t + "mark",
			a = F._data(e, i);
		!a || "queue" !== n && F._data(e, s) || "mark" !== n && F._data(e, r) || setTimeout(function() {
			F._data(e, s) || F._data(e, r) || (F.removeData(e, i, !0), a.fire())
		}, 0)
	}
	F.extend({
		cache: {},
		uuid: 0,
		expando: "jQuery" + (F.fn.jquery + Math.random())
			.replace(/\D/g, ""),
		noData: {
			embed: !0,
			object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
			applet: !0
		},
		hasData: function(e) {
			return !!(e = e.nodeType ? F.cache[e[F.expando]] : e[F.expando]) && !X(e)
		},
		data: function(e, t, n, i) {
			if (F.acceptData(e)) {
				var s, r, a, l = F.expando,
					o = "string" == typeof t,
					d = e.nodeType,
					u = d ? F.cache : e,
					c = d ? e[l] : e[l] && l,
					f = "events" === t;
				if (c && u[c] && (f || i || u[c].data) || !o || n !== E) return c || (d ? e[l] = c = ++F.uuid : c = l), u[c] || (u[c] = {}, d || (u[c].toJSON = F.noop)), "object" != typeof t && "function" != typeof t || (i ? u[c] = F.extend(u[c], t) : u[c].data = F.extend(u[c].data, t)), s = r = u[c], i || (r.data || (r.data = {}), r = r.data), n !== E && (r[F.camelCase(t)] = n), f && !r[t] ? s.events : (o ? null == (a = r[t]) && (a = r[F.camelCase(t)]) : a = r, a)
			}
		},
		removeData: function(e, t, n) {
			if (F.acceptData(e)) {
				var i, s, r, a = F.expando,
					l = e.nodeType,
					o = l ? F.cache : e,
					d = l ? e[a] : a;
				if (o[d]) {
					if (t && (i = n ? o[d] : o[d].data)) {
						F.isArray(t) || (t = t in i ? [t] : (t = F.camelCase(t)) in i ? [t] : t.split(" "));
						for (s = 0, r = t.length; s < r; s++) delete i[t[s]];
						if (!(n ? X : F.isEmptyObject)(i)) return
					}(n || (delete o[d].data, X(o[d]))) && (F.support.deleteExpando || !o.setInterval ? delete o[d] : o[d] = null, l && (F.support.deleteExpando ? delete e[a] : e.removeAttribute ? e.removeAttribute(a) : e[a] = null))
				}
			}
		},
		_data: function(e, t, n) {
			return F.data(e, t, n, !0)
		},
		acceptData: function(e) {
			if (e.nodeName) {
				var t = F.noData[e.nodeName.toLowerCase()];
				if (t) return !(!0 === t || e.getAttribute("classid") !== t)
			}
			return !0
		}
	}), F.fn.extend({
		data: function(n, e) {
			var i, s, t, r, a, l = this[0],
				o = 0,
				d = null;
			if (n !== E) return "object" == typeof n ? this.each(function() {
				F.data(this, n)
			}) : ((i = n.split(".", 2))[1] = i[1] ? "." + i[1] : "", s = i[1] + "!", F.access(this, function(t) {
				if (t === E) return (d = this.triggerHandler("getData" + s, [i[0]])) === E && l && (d = F.data(l, n), d = $(l, n, d)), d === E && i[1] ? this.data(i[0]) : d;
				i[1] = t, this.each(function() {
					var e = F(this);
					e.triggerHandler("setData" + s, i), F.data(this, n, t), e.triggerHandler("changeData" + s, i)
				})
			}, null, e, 1 < arguments.length, null, !1));
			if (this.length && (d = F.data(l), 1 === l.nodeType && !F._data(l, "parsedAttrs"))) {
				for (a = (t = l.attributes)
					.length; o < a; o++) 0 === (r = t[o].name)
					.indexOf("data-") && (r = F.camelCase(r.substring(5)), $(l, r, d[r]));
				F._data(l, "parsedAttrs", !0)
			}
			return d
		},
		removeData: function(e) {
			return this.each(function() {
				F.removeData(this, e)
			})
		}
	}), F.extend({
		_mark: function(e, t) {
			e && (t = (t || "fx") + "mark", F._data(e, t, (F._data(e, t) || 0) + 1))
		},
		_unmark: function(e, t, n) {
			if (!0 !== e && (n = t, t = e, e = !1), t) {
				var i = (n = n || "fx") + "mark",
					s = e ? 0 : (F._data(t, i) || 1) - 1;
				s ? F._data(t, i, s) : (F.removeData(t, i, !0), z(t, n, "mark"))
			}
		},
		queue: function(e, t, n) {
			var i;
			if (e) return t = (t || "fx") + "queue", i = F._data(e, t), n && (!i || F.isArray(n) ? i = F._data(e, t, F.makeArray(n)) : i.push(n)), i || []
		},
		dequeue: function(e, t) {
			t = t || "fx";
			var n = F.queue(e, t),
				i = n.shift(),
				s = {};
			"inprogress" === i && (i = n.shift()), i && ("fx" === t && n.unshift("inprogress"), F._data(e, t + ".run", s), i.call(e, function() {
				F.dequeue(e, t)
			}, s)), n.length || (F.removeData(e, t + "queue " + t + ".run", !0), z(e, t, "queue"))
		}
	}), F.fn.extend({
		queue: function(t, n) {
			var e = 2;
			return "string" != typeof t && (n = t, t = "fx", e--), arguments.length < e ? F.queue(this[0], t) : n === E ? this : this.each(function() {
				var e = F.queue(this, t, n);
				"fx" === t && "inprogress" !== e[0] && F.dequeue(this, t)
			})
		},
		dequeue: function(e) {
			return this.each(function() {
				F.dequeue(this, e)
			})
		},
		delay: function(i, e) {
			return i = F.fx && F.fx.speeds[i] || i, e = e || "fx", this.queue(e, function(e, t) {
				var n = setTimeout(e, i);
				t.stop = function() {
					clearTimeout(n)
				}
			})
		},
		clearQueue: function(e) {
			return this.queue(e || "fx", [])
		},
		promise: function(e, t) {
			"string" != typeof e && (t = e, e = E), e = e || "fx";
			var n, i = F.Deferred(),
				s = this,
				r = s.length,
				a = 1,
				l = e + "defer",
				o = e + "queue",
				d = e + "mark";

			function u() {
				--a || i.resolveWith(s, [s])
			}
			for (; r--;)(n = F.data(s[r], l, E, !0) || (F.data(s[r], o, E, !0) || F.data(s[r], d, E, !0)) && F.data(s[r], l, F.Callbacks("once memory"), !0)) && (a++, n.add(u));
			return u(), i.promise(t)
		}
	});
	var W, Y, U, V = /[\n\t\r]/g,
		Q = /\s+/,
		G = /\r/g,
		K = /^(?:button|input)$/i,
		Z = /^(?:button|input|object|select|textarea)$/i,
		J = /^a(?:rea)?$/i,
		ee = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
		te = F.support.getSetAttribute;

	function ne(e) {
		return F.event.special.hover ? e : e.replace(re, "mouseenter$1 mouseleave$1")
	}
	F.fn.extend({
		attr: function(e, t) {
			return F.access(this, F.attr, e, t, 1 < arguments.length)
		},
		removeAttr: function(e) {
			return this.each(function() {
				F.removeAttr(this, e)
			})
		},
		prop: function(e, t) {
			return F.access(this, F.prop, e, t, 1 < arguments.length)
		},
		removeProp: function(e) {
			return e = F.propFix[e] || e, this.each(function() {
				try {
					this[e] = E, delete this[e]
				} catch (e) {}
			})
		},
		addClass: function(t) {
			var e, n, i, s, r, a, l;
			if (F.isFunction(t)) return this.each(function(e) {
				F(this)
					.addClass(t.call(this, e, this.className))
			});
			if (t && "string" == typeof t)
				for (e = t.split(Q), n = 0, i = this.length; n < i; n++)
					if (1 === (s = this[n])
						.nodeType)
						if (s.className || 1 !== e.length) {
							for (r = " " + s.className + " ", a = 0, l = e.length; a < l; a++) ~r.indexOf(" " + e[a] + " ") || (r += e[a] + " ");
							s.className = F.trim(r)
						} else s.className = t;
			return this
		},
		removeClass: function(t) {
			var e, n, i, s, r, a, l;
			if (F.isFunction(t)) return this.each(function(e) {
				F(this)
					.removeClass(t.call(this, e, this.className))
			});
			if (t && "string" == typeof t || t === E)
				for (e = (t || "")
					.split(Q), n = 0, i = this.length; n < i; n++)
					if (1 === (s = this[n])
						.nodeType && s.className)
						if (t) {
							for (r = (" " + s.className + " ")
								.replace(V, " "), a = 0, l = e.length; a < l; a++) r = r.replace(" " + e[a] + " ", " ");
							s.className = F.trim(r)
						} else s.className = "";
			return this
		},
		toggleClass: function(r, a) {
			var l = typeof r,
				o = "boolean" == typeof a;
			return F.isFunction(r) ? this.each(function(e) {
				F(this)
					.toggleClass(r.call(this, e, this.className, a), a)
			}) : this.each(function() {
				if ("string" == l)
					for (var e, t = 0, n = F(this), i = a, s = r.split(Q); e = s[t++];) i = o ? i : !n.hasClass(e), n[i ? "addClass" : "removeClass"](e);
				else "undefined" != l && "boolean" != l || (this.className && F._data(this, "__className__", this.className), this.className = this.className || !1 === r ? "" : F._data(this, "__className__") || "")
			})
		},
		hasClass: function(e) {
			for (var t = " " + e + " ", n = 0, i = this.length; n < i; n++)
				if (1 === this[n].nodeType && -1 < (" " + this[n].className + " ")
					.replace(V, " ")
					.indexOf(t)) return !0;
			return !1
		},
		val: function(i) {
			var s, e, r, t = this[0];
			return arguments.length ? (r = F.isFunction(i), this.each(function(e) {
				var t, n = F(this);
				1 === this.nodeType && (null == (t = r ? i.call(this, e, n.val()) : i) ? t = "" : "number" == typeof t ? t += "" : F.isArray(t) && (t = F.map(t, function(e) {
					return null == e ? "" : e + ""
				})), (s = F.valHooks[this.type] || F.valHooks[this.nodeName.toLowerCase()]) && "set" in s && s.set(this, t, "value") !== E || (this.value = t))
			})) : t ? (s = F.valHooks[t.type] || F.valHooks[t.nodeName.toLowerCase()]) && "get" in s && (e = s.get(t, "value")) !== E ? e : "string" == typeof(e = t.value) ? e.replace(G, "") : null == e ? "" : e : void 0
		}
	}), F.extend({
		valHooks: {
			option: {
				get: function(e) {
					var t = e.attributes.value;
					return !t || t.specified ? e.value : e.text
				}
			},
			select: {
				get: function(e) {
					var t, n, i, s, r = e.selectedIndex,
						a = [],
						l = e.options,
						o = "select-one" === e.type;
					if (r < 0) return null;
					for (n = o ? r : 0, i = o ? r + 1 : l.length; n < i; n++)
						if ((s = l[n])
							.selected && (F.support.optDisabled ? !s.disabled : null === s.getAttribute("disabled")) && (!s.parentNode.disabled || !F.nodeName(s.parentNode, "optgroup"))) {
							if (t = F(s)
								.val(), o) return t;
							a.push(t)
						} return o && !a.length && l.length ? F(l[r])
						.val() : a
				},
				set: function(e, t) {
					var n = F.makeArray(t);
					return F(e)
						.find("option")
						.each(function() {
							this.selected = 0 <= F.inArray(F(this)
								.val(), n)
						}), n.length || (e.selectedIndex = -1), n
				}
			}
		},
		attrFn: {
			val: !0,
			css: !0,
			html: !0,
			text: !0,
			data: !0,
			width: !0,
			height: !0,
			offset: !0
		},
		attr: function(e, t, n, i) {
			var s, r, a, l = e.nodeType;
			if (e && 3 !== l && 8 !== l && 2 !== l) return i && t in F.attrFn ? F(e)[t](n) : void 0 === e.getAttribute ? F.prop(e, t, n) : ((a = 1 !== l || !F.isXMLDoc(e)) && (t = t.toLowerCase(), r = F.attrHooks[t] || (ee.test(t) ? Y : W)), n !== E ? null === n ? void F.removeAttr(e, t) : r && "set" in r && a && (s = r.set(e, n, t)) !== E ? s : (e.setAttribute(t, "" + n), n) : r && "get" in r && a && null !== (s = r.get(e, t)) ? s : null === (s = e.getAttribute(t)) ? E : s)
		},
		removeAttr: function(e, t) {
			var n, i, s, r, a, l = 0;
			if (t && 1 === e.nodeType)
				for (r = (i = t.toLowerCase()
						.split(Q))
					.length; l < r; l++)(s = i[l]) && (n = F.propFix[s] || s, (a = ee.test(s)) || F.attr(e, s, ""), e.removeAttribute(te ? s : n), a && n in e && (e[n] = !1))
		},
		attrHooks: {
			type: {
				set: function(e, t) {
					if (K.test(e.nodeName) && e.parentNode) F.error("type property can't be changed");
					else if (!F.support.radioValue && "radio" === t && F.nodeName(e, "input")) {
						var n = e.value;
						return e.setAttribute("type", t), n && (e.value = n), t
					}
				}
			},
			value: {
				get: function(e, t) {
					return W && F.nodeName(e, "button") ? W.get(e, t) : t in e ? e.value : null
				},
				set: function(e, t, n) {
					if (W && F.nodeName(e, "button")) return W.set(e, t, n);
					e.value = t
				}
			}
		},
		propFix: {
			tabindex: "tabIndex",
			readonly: "readOnly",
			for: "htmlFor",
			class: "className",
			maxlength: "maxLength",
			cellspacing: "cellSpacing",
			cellpadding: "cellPadding",
			rowspan: "rowSpan",
			colspan: "colSpan",
			usemap: "useMap",
			frameborder: "frameBorder",
			contenteditable: "contentEditable"
		},
		prop: function(e, t, n) {
			var i, s, r = e.nodeType;
			if (e && 3 !== r && 8 !== r && 2 !== r) return 1 === r && F.isXMLDoc(e) || (t = F.propFix[t] || t, s = F.propHooks[t]), n !== E ? s && "set" in s && (i = s.set(e, n, t)) !== E ? i : e[t] = n : s && "get" in s && null !== (i = s.get(e, t)) ? i : e[t]
		},
		propHooks: {
			tabIndex: {
				get: function(e) {
					var t = e.getAttributeNode("tabindex");
					return t && t.specified ? parseInt(t.value, 10) : Z.test(e.nodeName) || J.test(e.nodeName) && e.href ? 0 : E
				}
			}
		}
	}), F.attrHooks.tabindex = F.propHooks.tabIndex, Y = {
		get: function(e, t) {
			var n, i = F.prop(e, t);
			return !0 === i || "boolean" != typeof i && (n = e.getAttributeNode(t)) && !1 !== n.nodeValue ? t.toLowerCase() : E
		},
		set: function(e, t, n) {
			var i;
			return !1 === t ? F.removeAttr(e, n) : ((i = F.propFix[n] || n) in e && (e[i] = !0), e.setAttribute(n, n.toLowerCase())), n
		}
	}, te || (U = {
		name: !0,
		id: !0,
		coords: !0
	}, W = F.valHooks.button = {
		get: function(e, t) {
			var n;
			return (n = e.getAttributeNode(t)) && (U[t] ? "" !== n.nodeValue : n.specified) ? n.nodeValue : E
		},
		set: function(e, t, n) {
			var i = e.getAttributeNode(n);
			return i || (i = C.createAttribute(n), e.setAttributeNode(i)), i.nodeValue = t + ""
		}
	}, F.attrHooks.tabindex.set = W.set, F.each(["width", "height"], function(e, n) {
		F.attrHooks[n] = F.extend(F.attrHooks[n], {
			set: function(e, t) {
				if ("" === t) return e.setAttribute(n, "auto"), t
			}
		})
	}), F.attrHooks.contenteditable = {
		get: W.get,
		set: function(e, t, n) {
			"" === t && (t = "false"), W.set(e, t, n)
		}
	}), F.support.hrefNormalized || F.each(["href", "src", "width", "height"], function(e, n) {
		F.attrHooks[n] = F.extend(F.attrHooks[n], {
			get: function(e) {
				var t = e.getAttribute(n, 2);
				return null === t ? E : t
			}
		})
	}), F.support.style || (F.attrHooks.style = {
		get: function(e) {
			return e.style.cssText.toLowerCase() || E
		},
		set: function(e, t) {
			return e.style.cssText = "" + t
		}
	}), F.support.optSelected || (F.propHooks.selected = F.extend(F.propHooks.selected, {
		get: function(e) {
			var t = e.parentNode;
			return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null
		}
	})), F.support.enctype || (F.propFix.enctype = "encoding"), F.support.checkOn || F.each(["radio", "checkbox"], function() {
		F.valHooks[this] = {
			get: function(e) {
				return null === e.getAttribute("value") ? "on" : e.value
			}
		}
	}), F.each(["radio", "checkbox"], function() {
		F.valHooks[this] = F.extend(F.valHooks[this], {
			set: function(e, t) {
				if (F.isArray(t)) return e.checked = 0 <= F.inArray(F(e)
					.val(), t)
			}
		})
	});
	var ie = /^(?:textarea|input|select)$/i,
		se = /^([^\.]*)?(?:\.(.+))?$/,
		re = /(?:^|\s)hover(\.\S+)?\b/,
		ae = /^key/,
		le = /^(?:mouse|contextmenu)|click/,
		oe = /^(?:focusinfocus|focusoutblur)$/,
		de = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/;

	function ue() {
		return !1
	}

	function ce() {
		return !0
	}
	F.event = {
			add: function(e, t, n, i, s) {
				var r, a, l, o, d, u, c, f, p, m, g;
				if (3 !== e.nodeType && 8 !== e.nodeType && t && n && (r = F._data(e))) {
					for (n.handler && (n = (p = n)
							.handler, s = p.selector), n.guid || (n.guid = F.guid++), (l = r.events) || (r.events = l = {}), (a = r.handle) || (r.handle = a = function(e) {
							return void 0 === F || e && F.event.triggered === e.type ? E : F.event.dispatch.apply(a.elem, arguments)
						}, a.elem = e), t = F.trim(ne(t))
						.split(" "), o = 0; o < t.length; o++) u = (d = se.exec(t[o]) || [])[1], c = (d[2] || "")
						.split(".")
						.sort(), g = F.event.special[u] || {}, u = (s ? g.delegateType : g.bindType) || u, g = F.event.special[u] || {}, f = F.extend({
							type: u,
							origType: d[1],
							data: i,
							handler: n,
							guid: n.guid,
							selector: s,
							quick: s && (h = s, y = void 0, y = de.exec(h), y && (y[1] = (y[1] || "")
								.toLowerCase(), y[3] = y[3] && new RegExp("(?:^|\\s)" + y[3] + "(?:\\s|$)")), y),
							namespace: c.join(".")
						}, p), (m = l[u]) || ((m = l[u] = [])
							.delegateCount = 0, g.setup && !1 !== g.setup.call(e, i, c, a) || (e.addEventListener ? e.addEventListener(u, a, !1) : e.attachEvent && e.attachEvent("on" + u, a))), g.add && (g.add.call(e, f), f.handler.guid || (f.handler.guid = n.guid)), s ? m.splice(m.delegateCount++, 0, f) : m.push(f), F.event.global[u] = !0;
					var h, y;
					e = null
				}
			},
			global: {},
			remove: function(e, t, n, i, s) {
				var r, a, l, o, d, u, c, f, p, m, g, h, y = F.hasData(e) && F._data(e);
				if (y && (f = y.events)) {
					for (t = F.trim(ne(t || ""))
						.split(" "), r = 0; r < t.length; r++)
						if (l = o = (a = se.exec(t[r]) || [])[1], d = a[2], l) {
							for (p = F.event.special[l] || {}, u = (g = f[l = (i ? p.delegateType : p.bindType) || l] || [])
								.length, d = d ? new RegExp("(^|\\.)" + d.split(".")
									.sort()
									.join("\\.(?:.*\\.)?") + "(\\.|$)") : null, c = 0; c < g.length; c++) h = g[c], !s && o !== h.origType || n && n.guid !== h.guid || d && !d.test(h.namespace) || i && i !== h.selector && ("**" !== i || !h.selector) || (g.splice(c--, 1), h.selector && g.delegateCount--, p.remove && p.remove.call(e, h));
							0 === g.length && u !== g.length && (p.teardown && !1 !== p.teardown.call(e, d) || F.removeEvent(e, l, y.handle), delete f[l])
						} else
							for (l in f) F.event.remove(e, l + t[r], n, i, !0);
					F.isEmptyObject(f) && ((m = y.handle) && (m.elem = null), F.removeData(e, ["events", "handle"], !0))
				}
			},
			customEvent: {
				getData: !0,
				setData: !0,
				changeData: !0
			},
			trigger: function(e, t, n, i) {
				if (!n || 3 !== n.nodeType && 8 !== n.nodeType) {
					var s, r, a, l, o, d, u, c, f, p, m = e.type || e,
						g = [];
					if (!oe.test(m + F.event.triggered) && (0 <= m.indexOf("!") && (m = m.slice(0, -1), r = !0), 0 <= m.indexOf(".") && (m = (g = m.split("."))
						.shift(), g.sort()), n && !F.event.customEvent[m] || F.event.global[m]))
						if ((e = "object" == typeof e ? e[F.expando] ? e : new F.Event(m, e) : new F.Event(m))
							.type = m, e.isTrigger = !0, e.exclusive = r, e.namespace = g.join("."), e.namespace_re = e.namespace ? new RegExp("(^|\\.)" + g.join("\\.(?:.*\\.)?") + "(\\.|$)") : null, d = m.indexOf(":") < 0 ? "on" + m : "", n) {
							if (e.result = E, e.target || (e.target = n), (t = null != t ? F.makeArray(t) : [])
								.unshift(e), !(u = F.event.special[m] || {})
								.trigger || !1 !== u.trigger.apply(n, t)) {
								if (f = [
									[n, u.bindType || m]
								], !i && !u.noBubble && !F.isWindow(n)) {
									for (p = u.delegateType || m, l = oe.test(p + m) ? n : n.parentNode, o = null; l; l = l.parentNode) f.push([l, p]), o = l;
									o && o === n.ownerDocument && f.push([o.defaultView || o.parentWindow || x, p])
								}
								for (a = 0; a < f.length && !e.isPropagationStopped(); a++) l = f[a][0], e.type = f[a][1], (c = (F._data(l, "events") || {})[e.type] && F._data(l, "handle")) && c.apply(l, t), (c = d && l[d]) && F.acceptData(l) && !1 === c.apply(l, t) && e.preventDefault();
								return e.type = m, i || e.isDefaultPrevented() || u._default && !1 !== u._default.apply(n.ownerDocument, t) || "click" === m && F.nodeName(n, "a") || !F.acceptData(n) || d && n[m] && ("focus" !== m && "blur" !== m || 0 !== e.target.offsetWidth) && !F.isWindow(n) && ((o = n[d]) && (n[d] = null), n[F.event.triggered = m](), F.event.triggered = E, o && (n[d] = o)), e.result
							}
						} else
							for (a in s = F.cache) s[a].events && s[a].events[m] && F.event.trigger(e, t, s[a].handle.elem, !0)
				}
			},
			dispatch: function(e) {
				e = F.event.fix(e || x.event);
				var t, n, i, s, r, a, l, o, d, u, c = (F._data(this, "events") || {})[e.type] || [],
					f = c.delegateCount,
					p = [].slice.call(arguments, 0),
					m = !e.exclusive && !e.namespace,
					g = F.event.special[e.type] || {},
					h = [];
				if ((p[0] = e)
					.delegateTarget = this, !g.preDispatch || !1 !== g.preDispatch.call(this, e)) {
					if (f && (!e.button || "click" !== e.type))
						for ((s = F(this))
							.context = this.ownerDocument || this, i = e.target; i != this; i = i.parentNode || this)
							if (!0 !== i.disabled) {
								for (a = {}, o = [], s[0] = i, t = 0; t < f; t++) a[u = (d = c[t])
									.selector] === E && (a[u] = d.quick ? (y = i, v = d.quick, b = y.attributes || {}, (!v[1] || y.nodeName.toLowerCase() === v[1]) && (!v[2] || (b.id || {})
									.value === v[2]) && (!v[3] || v[3].test((b.class || {})
									.value))) : s.is(u)), a[u] && o.push(d);
								o.length && h.push({
									elem: i,
									matches: o
								})
							} var y, v, b;
					for (c.length > f && h.push({
						elem: this,
						matches: c.slice(f)
					}), t = 0; t < h.length && !e.isPropagationStopped(); t++)
						for (l = h[t], e.currentTarget = l.elem, n = 0; n < l.matches.length && !e.isImmediatePropagationStopped(); n++) d = l.matches[n], (m || !e.namespace && !d.namespace || e.namespace_re && e.namespace_re.test(d.namespace)) && (e.data = d.data, e.handleObj = d, (r = ((F.event.special[d.origType] || {})
								.handle || d.handler)
							.apply(l.elem, p)) !== E && !1 === (e.result = r) && (e.preventDefault(), e.stopPropagation()));
					return g.postDispatch && g.postDispatch.call(this, e), e.result
				}
			},
			props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
			fixHooks: {},
			keyHooks: {
				props: "char charCode key keyCode".split(" "),
				filter: function(e, t) {
					return null == e.which && (e.which = null != t.charCode ? t.charCode : t.keyCode), e
				}
			},
			mouseHooks: {
				props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
				filter: function(e, t) {
					var n, i, s, r = t.button,
						a = t.fromElement;
					return null == e.pageX && null != t.clientX && (i = (n = e.target.ownerDocument || C)
						.documentElement, s = n.body, e.pageX = t.clientX + (i && i.scrollLeft || s && s.scrollLeft || 0) - (i && i.clientLeft || s && s.clientLeft || 0), e.pageY = t.clientY + (i && i.scrollTop || s && s.scrollTop || 0) - (i && i.clientTop || s && s.clientTop || 0)), !e.relatedTarget && a && (e.relatedTarget = a === e.target ? t.toElement : a), e.which || r === E || (e.which = 1 & r ? 1 : 2 & r ? 3 : 4 & r ? 2 : 0), e
				}
			},
			fix: function(e) {
				if (e[F.expando]) return e;
				var t, n, i = e,
					s = F.event.fixHooks[e.type] || {},
					r = s.props ? this.props.concat(s.props) : this.props;
				for (e = F.Event(i), t = r.length; t;) e[n = r[--t]] = i[n];
				return e.target || (e.target = i.srcElement || C), 3 === e.target.nodeType && (e.target = e.target.parentNode), e.metaKey === E && (e.metaKey = e.ctrlKey), s.filter ? s.filter(e, i) : e
			},
			special: {
				ready: {
					setup: F.bindReady
				},
				load: {
					noBubble: !0
				},
				focus: {
					delegateType: "focusin"
				},
				blur: {
					delegateType: "focusout"
				},
				beforeunload: {
					setup: function(e, t, n) {
						F.isWindow(this) && (this.onbeforeunload = n)
					},
					teardown: function(e, t) {
						this.onbeforeunload === t && (this.onbeforeunload = null)
					}
				}
			},
			simulate: function(e, t, n, i) {
				var s = F.extend(new F.Event, n, {
					type: e,
					isSimulated: !0,
					originalEvent: {}
				});
				i ? F.event.trigger(s, null, t) : F.event.dispatch.call(t, s), s.isDefaultPrevented() && n.preventDefault()
			}
		}, F.event.handle = F.event.dispatch, F.removeEvent = C.removeEventListener ? function(e, t, n) {
			e.removeEventListener && e.removeEventListener(t, n, !1)
		} : function(e, t, n) {
			e.detachEvent && e.detachEvent("on" + t, n)
		}, F.Event = function(e, t) {
			if (!(this instanceof F.Event)) return new F.Event(e, t);
			e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || !1 === e.returnValue || e.getPreventDefault && e.getPreventDefault() ? ce : ue) : this.type = e, t && F.extend(this, t), this.timeStamp = e && e.timeStamp || F.now(), this[F.expando] = !0
		}, F.Event.prototype = {
			preventDefault: function() {
				this.isDefaultPrevented = ce;
				var e = this.originalEvent;
				e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1)
			},
			stopPropagation: function() {
				this.isPropagationStopped = ce;
				var e = this.originalEvent;
				e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0)
			},
			stopImmediatePropagation: function() {
				this.isImmediatePropagationStopped = ce, this.stopPropagation()
			},
			isDefaultPrevented: ue,
			isPropagationStopped: ue,
			isImmediatePropagationStopped: ue
		}, F.each({
			mouseenter: "mouseover",
			mouseleave: "mouseout"
		}, function(e, s) {
			F.event.special[e] = {
				delegateType: s,
				bindType: s,
				handle: function(e) {
					var t, n = e.relatedTarget,
						i = e.handleObj;
					return i.selector, n && (n === this || F.contains(this, n)) || (e.type = i.origType, t = i.handler.apply(this, arguments), e.type = s), t
				}
			}
		}), F.support.submitBubbles || (F.event.special.submit = {
			setup: function() {
				if (F.nodeName(this, "form")) return !1;
				F.event.add(this, "click._submit keypress._submit", function(e) {
					var t = e.target,
						n = F.nodeName(t, "input") || F.nodeName(t, "button") ? t.form : E;
					n && !n._submit_attached && (F.event.add(n, "submit._submit", function(e) {
						e._submit_bubble = !0
					}), n._submit_attached = !0)
				})
			},
			postDispatch: function(e) {
				e._submit_bubble && (delete e._submit_bubble, this.parentNode && !e.isTrigger && F.event.simulate("submit", this.parentNode, e, !0))
			},
			teardown: function() {
				if (F.nodeName(this, "form")) return !1;
				F.event.remove(this, "._submit")
			}
		}), F.support.changeBubbles || (F.event.special.change = {
			setup: function() {
				if (ie.test(this.nodeName)) return "checkbox" !== this.type && "radio" !== this.type || (F.event.add(this, "propertychange._change", function(e) {
					"checked" === e.originalEvent.propertyName && (this._just_changed = !0)
				}), F.event.add(this, "click._change", function(e) {
					this._just_changed && !e.isTrigger && (this._just_changed = !1, F.event.simulate("change", this, e, !0))
				})), !1;
				F.event.add(this, "beforeactivate._change", function(e) {
					var t = e.target;
					ie.test(t.nodeName) && !t._change_attached && (F.event.add(t, "change._change", function(e) {
						!this.parentNode || e.isSimulated || e.isTrigger || F.event.simulate("change", this.parentNode, e, !0)
					}), t._change_attached = !0)
				})
			},
			handle: function(e) {
				var t = e.target;
				if (this !== t || e.isSimulated || e.isTrigger || "radio" !== t.type && "checkbox" !== t.type) return e.handleObj.handler.apply(this, arguments)
			},
			teardown: function() {
				return F.event.remove(this, "._change"), ie.test(this.nodeName)
			}
		}), F.support.focusinBubbles || F.each({
			focus: "focusin",
			blur: "focusout"
		}, function(e, t) {
			function n(e) {
				F.event.simulate(t, e.target, F.event.fix(e), !0)
			}
			var i = 0;
			F.event.special[t] = {
				setup: function() {
					0 == i++ && C.addEventListener(e, n, !0)
				},
				teardown: function() {
					0 == --i && C.removeEventListener(e, n, !0)
				}
			}
		}), F.fn.extend({
			on: function(e, t, n, i, s) {
				var r, a;
				if ("object" == typeof e) {
					for (a in "string" != typeof t && (n = n || t, t = E), e) this.on(a, t, n, e[a], s);
					return this
				}
				if (null == n && null == i ? (i = t, n = t = E) : null == i && ("string" == typeof t ? (i = n, n = E) : (i = n, n = t, t = E)), !1 === i) i = ue;
				else if (!i) return this;
				return 1 === s && (r = i, (i = function(e) {
						return F()
							.off(e), r.apply(this, arguments)
					})
					.guid = r.guid || (r.guid = F.guid++)), this.each(function() {
					F.event.add(this, e, i, n, t)
				})
			},
			one: function(e, t, n, i) {
				return this.on(e, t, n, i, 1)
			},
			off: function(e, t, n) {
				if (e && e.preventDefault && e.handleObj) {
					var i = e.handleObj;
					return F(e.delegateTarget)
						.off(i.namespace ? i.origType + "." + i.namespace : i.origType, i.selector, i.handler), this
				}
				if ("object" != typeof e) return !1 !== t && "function" != typeof t || (n = t, t = E), !1 === n && (n = ue), this.each(function() {
					F.event.remove(this, e, n, t)
				});
				for (var s in e) this.off(s, t, e[s]);
				return this
			},
			bind: function(e, t, n) {
				return this.on(e, null, t, n)
			},
			unbind: function(e, t) {
				return this.off(e, null, t)
			},
			live: function(e, t, n) {
				return F(this.context)
					.on(e, this.selector, t, n), this
			},
			die: function(e, t) {
				return F(this.context)
					.off(e, this.selector || "**", t), this
			},
			delegate: function(e, t, n, i) {
				return this.on(t, e, n, i)
			},
			undelegate: function(e, t, n) {
				return 1 == arguments.length ? this.off(e, "**") : this.off(t, e, n)
			},
			trigger: function(e, t) {
				return this.each(function() {
					F.event.trigger(e, t, this)
				})
			},
			triggerHandler: function(e, t) {
				if (this[0]) return F.event.trigger(e, t, this[0], !0)
			},
			toggle: function(n) {
				function e(e) {
					var t = (F._data(this, "lastToggle" + n.guid) || 0) % s;
					return F._data(this, "lastToggle" + n.guid, 1 + t), e.preventDefault(), i[t].apply(this, arguments) || !1
				}
				var i = arguments,
					t = n.guid || F.guid++,
					s = 0;
				for (e.guid = t; s < i.length;) i[s++].guid = t;
				return this.click(e)
			},
			hover: function(e, t) {
				return this.mouseenter(e)
					.mouseleave(t || e)
			}
		}), F.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function(e, n) {
			F.fn[n] = function(e, t) {
				return null == t && (t = e, e = null), 0 < arguments.length ? this.on(n, null, e, t) : this.trigger(n)
			}, F.attrFn && (F.attrFn[n] = !0), ae.test(n) && (F.event.fixHooks[n] = F.event.keyHooks), le.test(n) && (F.event.fixHooks[n] = F.event.mouseHooks)
		}),
		function() {
			var y = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
				u = "sizcache" + (Math.random() + "")
				.replace(".", ""),
				a = 0,
				v = Object.prototype.toString,
				c = !1,
				n = !0,
				d = /\\/g,
				r = /\r\n/g,
				o = /\W/;
			[0, 0].sort(function() {
				return n = !1, 0
			});
			var b = function(e, t, n, i) {
				n = n || [];
				var s = t = t || C;
				if (1 !== t.nodeType && 9 !== t.nodeType) return [];
				if (!e || "string" != typeof e) return n;
				var r, a, l, o, d, u, c, f, p = !0,
					m = b.isXML(t),
					g = [],
					h = e;
				do {
					if (y.exec(""), (r = y.exec(h)) && (h = r[3], g.push(r[1]), r[2])) {
						o = r[3];
						break
					}
				} while (r);
				if (1 < g.length && _.exec(e))
					if (2 === g.length && x.relative[g[0]]) a = I(g[0] + g[1], t, i);
					else
						for (a = x.relative[g[0]] ? [t] : b(g.shift(), t); g.length;) e = g.shift(), x.relative[e] && (e += g.shift()), a = I(e, a, i);
				else if (!i && 1 < g.length && 9 === t.nodeType && !m && x.match.ID.test(g[0]) && !x.match.ID.test(g[g.length - 1]) && (t = (d = b.find(g.shift(), t, m))
					.expr ? b.filter(d.expr, d.set)[0] : d.set[0]), t)
					for (a = (d = i ? {
							expr: g.pop(),
							set: w(i)
						} : b.find(g.pop(), 1 !== g.length || "~" !== g[0] && "+" !== g[0] || !t.parentNode ? t : t.parentNode, m))
						.expr ? b.filter(d.expr, d.set) : d.set, 0 < g.length ? l = w(a) : p = !1; g.length;) c = u = g.pop(), x.relative[u] ? c = g.pop() : u = "", null == c && (c = t), x.relative[u](l, c, m);
				else l = g = [];
				if ((l = l || a) || b.error(u || e), "[object Array]" === v.call(l))
					if (p)
						if (t && 1 === t.nodeType)
							for (f = 0; null != l[f]; f++) l[f] && (!0 === l[f] || 1 === l[f].nodeType && b.contains(t, l[f])) && n.push(a[f]);
						else
							for (f = 0; null != l[f]; f++) l[f] && 1 === l[f].nodeType && n.push(a[f]);
				else n.push.apply(n, l);
				else w(l, n);
				return o && (b(o, s, n, i), b.uniqueSort(n)), n
			};

			function e(e, t) {
				return "\\" + (t - 0 + 1)
			}
			b.uniqueSort = function(e) {
				if (i && (c = n, e.sort(i), c))
					for (var t = 1; t < e.length; t++) e[t] === e[t - 1] && e.splice(t--, 1);
				return e
			}, b.matches = function(e, t) {
				return b(e, null, null, t)
			}, b.matchesSelector = function(e, t) {
				return 0 < b(t, null, null, [e])
					.length
			}, b.find = function(e, t, n) {
				var i, s, r, a, l, o;
				if (!e) return [];
				for (s = 0, r = x.order.length; s < r; s++)
					if (l = x.order[s], (a = x.leftMatch[l].exec(e)) && (o = a[1], a.splice(1, 1), "\\" !== o.substr(o.length - 1) && (a[1] = (a[1] || "")
						.replace(d, ""), null != (i = x.find[l](a, t, n))))) {
						e = e.replace(x.match[l], "");
						break
					} return {
					set: i = i || (void 0 !== t.getElementsByTagName ? t.getElementsByTagName("*") : []),
					expr: e
				}
			}, b.filter = function(e, t, n, i) {
				for (var s, r, a, l, o, d, u, c, f, p = e, m = [], g = t, h = t && t[0] && b.isXML(t[0]); e && t.length;) {
					for (a in x.filter)
						if (null != (s = x.leftMatch[a].exec(e)) && s[2]) {
							if (d = x.filter[a], u = s[1], r = !1, s.splice(1, 1), "\\" === u.substr(u.length - 1)) continue;
							if (g === m && (m = []), x.preFilter[a])
								if (s = x.preFilter[a](s, g, n, m, i, h)) {
									if (!0 === s) continue
								} else r = l = !0;
							if (s)
								for (c = 0; null != (o = g[c]); c++) o && (f = i ^ (l = d(o, s, c, g)), n && null != l ? f ? r = !0 : g[c] = !1 : f && (m.push(o), r = !0));
							if (l !== E) {
								if (n || (g = m), e = e.replace(x.match[a], ""), !r) return [];
								break
							}
						} if (e === p) {
						if (null != r) break;
						b.error(e)
					}
					p = e
				}
				return g
			}, b.error = function(e) {
				throw new Error("Syntax error, unrecognized expression: " + e)
			};
			var f = b.getText = function(e) {
					var t, n, i = e.nodeType,
						s = "";
					if (i) {
						if (1 === i || 9 === i || 11 === i) {
							if ("string" == typeof e.textContent) return e.textContent;
							if ("string" == typeof e.innerText) return e.innerText.replace(r, "");
							for (e = e.firstChild; e; e = e.nextSibling) s += f(e)
						} else if (3 === i || 4 === i) return e.nodeValue
					} else
						for (t = 0; n = e[t]; t++) 8 !== n.nodeType && (s += f(n));
					return s
				},
				x = b.selectors = {
					order: ["ID", "NAME", "TAG"],
					match: {
						ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
						CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
						NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
						ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
						TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
						CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
						POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
						PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
					},
					leftMatch: {},
					attrMap: {
						class: "className",
						for: "htmlFor"
					},
					attrHandle: {
						href: function(e) {
							return e.getAttribute("href")
						},
						type: function(e) {
							return e.getAttribute("type")
						}
					},
					relative: {
						"+": function(e, t) {
							var n = "string" == typeof t,
								i = n && !o.test(t),
								s = n && !i;
							i && (t = t.toLowerCase());
							for (var r, a = 0, l = e.length; a < l; a++)
								if (r = e[a]) {
									for (;
										(r = r.previousSibling) && 1 !== r.nodeType;);
									e[a] = s || r && r.nodeName.toLowerCase() === t ? r || !1 : r === t
								} s && b.filter(t, e, !0)
						},
						">": function(e, t) {
							var n, i = "string" == typeof t,
								s = 0,
								r = e.length;
							if (i && !o.test(t)) {
								for (t = t.toLowerCase(); s < r; s++)
									if (n = e[s]) {
										var a = n.parentNode;
										e[s] = a.nodeName.toLowerCase() === t && a
									}
							} else {
								for (; s < r; s++)(n = e[s]) && (e[s] = i ? n.parentNode : n.parentNode === t);
								i && b.filter(t, e, !0)
							}
						},
						"": function(e, t, n) {
							var i, s = a++,
								r = k;
							"string" != typeof t || o.test(t) || (i = t = t.toLowerCase(), r = T), r("parentNode", t, s, e, i, n)
						},
						"~": function(e, t, n) {
							var i, s = a++,
								r = k;
							"string" != typeof t || o.test(t) || (i = t = t.toLowerCase(), r = T), r("previousSibling", t, s, e, i, n)
						}
					},
					find: {
						ID: function(e, t, n) {
							if (void 0 !== t.getElementById && !n) {
								var i = t.getElementById(e[1]);
								return i && i.parentNode ? [i] : []
							}
						},
						NAME: function(e, t) {
							if (void 0 !== t.getElementsByName) {
								for (var n = [], i = t.getElementsByName(e[1]), s = 0, r = i.length; s < r; s++) i[s].getAttribute("name") === e[1] && n.push(i[s]);
								return 0 === n.length ? null : n
							}
						},
						TAG: function(e, t) {
							if (void 0 !== t.getElementsByTagName) return t.getElementsByTagName(e[1])
						}
					},
					preFilter: {
						CLASS: function(e, t, n, i, s, r) {
							if (e = " " + e[1].replace(d, "") + " ", r) return e;
							for (var a, l = 0; null != (a = t[l]); l++) a && (s ^ (a.className && 0 <= (" " + a.className + " ")
								.replace(/[\t\n\r]/g, " ")
								.indexOf(e)) ? n || i.push(a) : n && (t[l] = !1));
							return !1
						},
						ID: function(e) {
							return e[1].replace(d, "")
						},
						TAG: function(e, t) {
							return e[1].replace(d, "")
								.toLowerCase()
						},
						CHILD: function(e) {
							if ("nth" === e[1]) {
								e[2] || b.error(e[0]), e[2] = e[2].replace(/^\+|\s*/g, "");
								var t = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(("even" === e[2] ? "2n" : "odd" === e[2] && "2n+1") || !/\D/.test(e[2]) && "0n+" + e[2] || e[2]);
								e[2] = t[1] + (t[2] || 1) - 0, e[3] = t[3] - 0
							} else e[2] && b.error(e[0]);
							return e[0] = a++, e
						},
						ATTR: function(e, t, n, i, s, r) {
							var a = e[1] = e[1].replace(d, "");
							return !r && x.attrMap[a] && (e[1] = x.attrMap[a]), e[4] = (e[4] || e[5] || "")
								.replace(d, ""), "~=" === e[2] && (e[4] = " " + e[4] + " "), e
						},
						PSEUDO: function(e, t, n, i, s) {
							if ("not" === e[1]) {
								if (!(1 < (y.exec(e[3]) || "")
									.length || /^\w/.test(e[3]))) {
									var r = b.filter(e[3], t, n, !0 ^ s);
									return n || i.push.apply(i, r), !1
								}
								e[3] = b(e[3], null, null, t)
							} else if (x.match.POS.test(e[0]) || x.match.CHILD.test(e[0])) return !0;
							return e
						},
						POS: function(e) {
							return e.unshift(!0), e
						}
					},
					filters: {
						enabled: function(e) {
							return !1 === e.disabled && "hidden" !== e.type
						},
						disabled: function(e) {
							return !0 === e.disabled
						},
						checked: function(e) {
							return !0 === e.checked
						},
						selected: function(e) {
							return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected
						},
						parent: function(e) {
							return !!e.firstChild
						},
						empty: function(e) {
							return !e.firstChild
						},
						has: function(e, t, n) {
							return !!b(n[3], e)
								.length
						},
						header: function(e) {
							return /h\d/i.test(e.nodeName)
						},
						text: function(e) {
							var t = e.getAttribute("type"),
								n = e.type;
							return "input" === e.nodeName.toLowerCase() && "text" === n && (t === n || null === t)
						},
						radio: function(e) {
							return "input" === e.nodeName.toLowerCase() && "radio" === e.type
						},
						checkbox: function(e) {
							return "input" === e.nodeName.toLowerCase() && "checkbox" === e.type
						},
						file: function(e) {
							return "input" === e.nodeName.toLowerCase() && "file" === e.type
						},
						password: function(e) {
							return "input" === e.nodeName.toLowerCase() && "password" === e.type
						},
						submit: function(e) {
							var t = e.nodeName.toLowerCase();
							return ("input" === t || "button" === t) && "submit" === e.type
						},
						image: function(e) {
							return "input" === e.nodeName.toLowerCase() && "image" === e.type
						},
						reset: function(e) {
							var t = e.nodeName.toLowerCase();
							return ("input" === t || "button" === t) && "reset" === e.type
						},
						button: function(e) {
							var t = e.nodeName.toLowerCase();
							return "input" === t && "button" === e.type || "button" === t
						},
						input: function(e) {
							return /input|select|textarea|button/i.test(e.nodeName)
						},
						focus: function(e) {
							return e === e.ownerDocument.activeElement
						}
					},
					setFilters: {
						first: function(e, t) {
							return 0 === t
						},
						last: function(e, t, n, i) {
							return t === i.length - 1
						},
						even: function(e, t) {
							return t % 2 == 0
						},
						odd: function(e, t) {
							return t % 2 == 1
						},
						lt: function(e, t, n) {
							return t < n[3] - 0
						},
						gt: function(e, t, n) {
							return t > n[3] - 0
						},
						nth: function(e, t, n) {
							return n[3] - 0 === t
						},
						eq: function(e, t, n) {
							return n[3] - 0 === t
						}
					},
					filter: {
						PSEUDO: function(e, t, n, i) {
							var s = t[1],
								r = x.filters[s];
							if (r) return r(e, n, t, i);
							if ("contains" === s) return 0 <= (e.textContent || e.innerText || f([e]) || "")
								.indexOf(t[3]);
							if ("not" === s) {
								for (var a = t[3], l = 0, o = a.length; l < o; l++)
									if (a[l] === e) return !1;
								return !0
							}
							b.error(s)
						},
						CHILD: function(e, t) {
							var n, i, s, r, a, l, o = t[1],
								d = e;
							switch (o) {
								case "only":
								case "first":
									for (; d = d.previousSibling;)
										if (1 === d.nodeType) return !1;
									if ("first" === o) return !0;
									d = e;
								case "last":
									for (; d = d.nextSibling;)
										if (1 === d.nodeType) return !1;
									return !0;
								case "nth":
									if (n = t[2], i = t[3], 1 === n && 0 === i) return !0;
									if (s = t[0], (r = e.parentNode) && (r[u] !== s || !e.nodeIndex)) {
										for (a = 0, d = r.firstChild; d; d = d.nextSibling) 1 === d.nodeType && (d.nodeIndex = ++a);
										r[u] = s
									}
									return l = e.nodeIndex - i, 0 === n ? 0 == l : l % n == 0 && 0 <= l / n
							}
						},
						ID: function(e, t) {
							return 1 === e.nodeType && e.getAttribute("id") === t
						},
						TAG: function(e, t) {
							return "*" === t && 1 === e.nodeType || !!e.nodeName && e.nodeName.toLowerCase() === t
						},
						CLASS: function(e, t) {
							return -1 < (" " + (e.className || e.getAttribute("class")) + " ")
								.indexOf(t)
						},
						ATTR: function(e, t) {
							var n = t[1],
								i = b.attr ? b.attr(e, n) : x.attrHandle[n] ? x.attrHandle[n](e) : null != e[n] ? e[n] : e.getAttribute(n),
								s = i + "",
								r = t[2],
								a = t[4];
							return null == i ? "!=" === r : !r && b.attr ? null != i : "=" === r ? s === a : "*=" === r ? 0 <= s.indexOf(a) : "~=" === r ? 0 <= (" " + s + " ")
								.indexOf(a) : a ? "!=" === r ? s !== a : "^=" === r ? 0 === s.indexOf(a) : "$=" === r ? s.substr(s.length - a.length) === a : "|=" === r && (s === a || s.substr(0, a.length + 1) === a + "-") : s && !1 !== i
						},
						POS: function(e, t, n, i) {
							var s = t[2],
								r = x.setFilters[s];
							if (r) return r(e, n, t, i)
						}
					}
				},
				_ = x.match.POS;
			for (var t in x.match) x.match[t] = new RegExp(x.match[t].source + /(?![^\[]*\])(?![^\(]*\))/.source), x.leftMatch[t] = new RegExp(/(^(?:.|\r|\n)*?)/.source + x.match[t].source.replace(/\\(\d+)/g, e));
			x.match.globalPOS = _;
			var i, p, s, l, m, g, h, w = function(e, t) {
				return e = Array.prototype.slice.call(e, 0), t ? (t.push.apply(t, e), t) : e
			};
			try {
				Array.prototype.slice.call(C.documentElement.childNodes, 0)[0].nodeType
			} catch (e) {
				w = function(e, t) {
					var n = 0,
						i = t || [];
					if ("[object Array]" === v.call(e)) Array.prototype.push.apply(i, e);
					else if ("number" == typeof e.length)
						for (var s = e.length; n < s; n++) i.push(e[n]);
					else
						for (; e[n]; n++) i.push(e[n]);
					return i
				}
			}

			function T(e, t, n, i, s, r) {
				for (var a = 0, l = i.length; a < l; a++) {
					var o = i[a];
					if (o) {
						var d = !1;
						for (o = o[e]; o;) {
							if (o[u] === n) {
								d = i[o.sizset];
								break
							}
							if (1 !== o.nodeType || r || (o[u] = n, o.sizset = a), o.nodeName.toLowerCase() === t) {
								d = o;
								break
							}
							o = o[e]
						}
						i[a] = d
					}
				}
			}

			function k(e, t, n, i, s, r) {
				for (var a = 0, l = i.length; a < l; a++) {
					var o = i[a];
					if (o) {
						var d = !1;
						for (o = o[e]; o;) {
							if (o[u] === n) {
								d = i[o.sizset];
								break
							}
							if (1 === o.nodeType)
								if (r || (o[u] = n, o.sizset = a), "string" != typeof t) {
									if (o === t) {
										d = !0;
										break
									}
								} else if (0 < b.filter(t, [o])
								.length) {
								d = o;
								break
							}
							o = o[e]
						}
						i[a] = d
					}
				}
			}
			C.documentElement.compareDocumentPosition ? i = function(e, t) {
					return e === t ? (c = !0, 0) : e.compareDocumentPosition && t.compareDocumentPosition ? 4 & e.compareDocumentPosition(t) ? -1 : 1 : e.compareDocumentPosition ? -1 : 1
				} : (i = function(e, t) {
					if (e === t) return c = !0, 0;
					if (e.sourceIndex && t.sourceIndex) return e.sourceIndex - t.sourceIndex;
					var n, i, s = [],
						r = [],
						a = e.parentNode,
						l = t.parentNode,
						o = a;
					if (a === l) return p(e, t);
					if (!a) return -1;
					if (!l) return 1;
					for (; o;) s.unshift(o), o = o.parentNode;
					for (o = l; o;) r.unshift(o), o = o.parentNode;
					n = s.length, i = r.length;
					for (var d = 0; d < n && d < i; d++)
						if (s[d] !== r[d]) return p(s[d], r[d]);
					return d === n ? p(e, r[d], -1) : p(s[d], t, 1)
				}, p = function(e, t, n) {
					if (e === t) return n;
					for (var i = e.nextSibling; i;) {
						if (i === t) return -1;
						i = i.nextSibling
					}
					return 1
				}), s = C.createElement("div"), l = "script" + (new Date)
				.getTime(), m = C.documentElement, s.innerHTML = "<a name='" + l + "'/>", m.insertBefore(s, m.firstChild), C.getElementById(l) && (x.find.ID = function(e, t, n) {
					if (void 0 !== t.getElementById && !n) {
						var i = t.getElementById(e[1]);
						return i ? i.id === e[1] || void 0 !== i.getAttributeNode && i.getAttributeNode("id")
							.nodeValue === e[1] ? [i] : E : []
					}
				}, x.filter.ID = function(e, t) {
					var n = void 0 !== e.getAttributeNode && e.getAttributeNode("id");
					return 1 === e.nodeType && n && n.nodeValue === t
				}), m.removeChild(s), m = s = null, (g = C.createElement("div"))
				.appendChild(C.createComment("")), 0 < g.getElementsByTagName("*")
				.length && (x.find.TAG = function(e, t) {
					var n = t.getElementsByTagName(e[1]);
					if ("*" === e[1]) {
						for (var i = [], s = 0; n[s]; s++) 1 === n[s].nodeType && i.push(n[s]);
						n = i
					}
					return n
				}), g.innerHTML = "<a href='#'></a>", g.firstChild && void 0 !== g.firstChild.getAttribute && "#" !== g.firstChild.getAttribute("href") && (x.attrHandle.href = function(e) {
					return e.getAttribute("href", 2)
				}), g = null, C.querySelectorAll && function() {
					var c = b,
						e = C.createElement("div");
					if (e.innerHTML = "<p class='TEST'></p>", !e.querySelectorAll || 0 !== e.querySelectorAll(".TEST")
						.length) {
						for (var t in b = function(e, t, n, i) {
							if (t = t || C, !i && !b.isXML(t)) {
								var s = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(e);
								if (s && (1 === t.nodeType || 9 === t.nodeType)) {
									if (s[1]) return w(t.getElementsByTagName(e), n);
									if (s[2] && x.find.CLASS && t.getElementsByClassName) return w(t.getElementsByClassName(s[2]), n)
								}
								if (9 === t.nodeType) {
									if ("body" === e && t.body) return w([t.body], n);
									if (s && s[3]) {
										var r = t.getElementById(s[3]);
										if (!r || !r.parentNode) return w([], n);
										if (r.id === s[3]) return w([r], n)
									}
									try {
										return w(t.querySelectorAll(e), n)
									} catch (e) {}
								} else if (1 === t.nodeType && "object" !== t.nodeName.toLowerCase()) {
									var a = t,
										l = t.getAttribute("id"),
										o = l || "__sizzle__",
										d = t.parentNode,
										u = /^\s*[+~]/.test(e);
									l ? o = o.replace(/'/g, "\\$&") : t.setAttribute("id", o), u && d && (t = t.parentNode);
									try {
										if (!u || d) return w(t.querySelectorAll("[id='" + o + "'] " + e), n)
									} catch (e) {} finally {
										l || a.removeAttribute("id")
									}
								}
							}
							return c(e, t, n, i)
						}, c) b[t] = c[t];
						e = null
					}
				}(),
				function() {
					var e = C.documentElement,
						i = e.matchesSelector || e.mozMatchesSelector || e.webkitMatchesSelector || e.msMatchesSelector;
					if (i) {
						var s = !i.call(C.createElement("div"), "div"),
							r = !1;
						try {
							i.call(C.documentElement, "[test!='']:sizzle")
						} catch (e) {
							r = !0
						}
						b.matchesSelector = function(e, t) {
							if (t = t.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"), !b.isXML(e)) try {
								if (r || !x.match.PSEUDO.test(t) && !/!=/.test(t)) {
									var n = i.call(e, t);
									if (n || !s || e.document && 11 !== e.document.nodeType) return n
								}
							} catch (e) {}
							return 0 < b(t, null, null, [e])
								.length
						}
					}
				}(), (h = C.createElement("div"))
				.innerHTML = "<div class='test e'></div><div class='test'></div>", h.getElementsByClassName && 0 !== h.getElementsByClassName("e")
				.length && (h.lastChild.className = "e", 1 !== h.getElementsByClassName("e")
					.length && (x.order.splice(1, 0, "CLASS"), x.find.CLASS = function(e, t, n) {
						if (void 0 !== t.getElementsByClassName && !n) return t.getElementsByClassName(e[1])
					}, h = null)), C.documentElement.contains ? b.contains = function(e, t) {
					return e !== t && (!e.contains || e.contains(t))
				} : C.documentElement.compareDocumentPosition ? b.contains = function(e, t) {
					return !!(16 & e.compareDocumentPosition(t))
				} : b.contains = function() {
					return !1
				}, b.isXML = function(e) {
					var t = (e ? e.ownerDocument || e : 0)
						.documentElement;
					return !!t && "HTML" !== t.nodeName
				};
			var I = function(e, t, n) {
				for (var i, s = [], r = "", a = t.nodeType ? [t] : t; i = x.match.PSEUDO.exec(e);) r += i[0], e = e.replace(x.match.PSEUDO, "");
				e = x.relative[e] ? e + "*" : e;
				for (var l = 0, o = a.length; l < o; l++) b(e, a[l], s, n);
				return b.filter(r, s)
			};
			b.attr = F.attr, b.selectors.attrMap = {}, F.find = b, F.expr = b.selectors, F.expr[":"] = F.expr.filters, F.unique = b.uniqueSort, F.text = b.getText, F.isXMLDoc = b.isXML, F.contains = b.contains
		}();
	var fe = /Until$/,
		pe = /^(?:parents|prevUntil|prevAll)/,
		me = /,/,
		ge = /^.[^:#\[\.,]*$/,
		he = Array.prototype.slice,
		ye = F.expr.match.globalPOS,
		ve = {
			children: !0,
			contents: !0,
			next: !0,
			prev: !0
		};

	function be(e) {
		return !e || !e.parentNode || 11 === e.parentNode.nodeType
	}

	function xe(e, n, i) {
		if (n = n || 0, F.isFunction(n)) return F.grep(e, function(e, t) {
			return !!n.call(e, t, e) === i
		});
		if (n.nodeType) return F.grep(e, function(e, t) {
			return e === n === i
		});
		if ("string" == typeof n) {
			var t = F.grep(e, function(e) {
				return 1 === e.nodeType
			});
			if (ge.test(n)) return F.filter(n, t, !i);
			n = F.filter(n, t)
		}
		return F.grep(e, function(e, t) {
			return 0 <= F.inArray(e, n) === i
		})
	}

	function _e(e) {
		var t = we.split("|"),
			n = e.createDocumentFragment();
		if (n.createElement)
			for (; t.length;) n.createElement(t.pop());
		return n
	}
	F.fn.extend({
		find: function(e) {
			var t, n, i = this;
			if ("string" != typeof e) return F(e)
				.filter(function() {
					for (t = 0, n = i.length; t < n; t++)
						if (F.contains(i[t], this)) return !0
				});
			var s, r, a, l = this.pushStack("", "find", e);
			for (t = 0, n = this.length; t < n; t++)
				if (s = l.length, F.find(e, this[t], l), 0 < t)
					for (r = s; r < l.length; r++)
						for (a = 0; a < s; a++)
							if (l[a] === l[r]) {
								l.splice(r--, 1);
								break
							} return l
		},
		has: function(e) {
			var n = F(e);
			return this.filter(function() {
				for (var e = 0, t = n.length; e < t; e++)
					if (F.contains(this, n[e])) return !0
			})
		},
		not: function(e) {
			return this.pushStack(xe(this, e, !1), "not", e)
		},
		filter: function(e) {
			return this.pushStack(xe(this, e, !0), "filter", e)
		},
		is: function(e) {
			return !!e && ("string" == typeof e ? ye.test(e) ? 0 <= F(e, this.context)
				.index(this[0]) : 0 < F.filter(e, this)
				.length : 0 < this.filter(e)
				.length)
		},
		closest: function(e, t) {
			var n, i, s = [],
				r = this[0];
			if (F.isArray(e)) {
				for (var a = 1; r && r.ownerDocument && r !== t;) {
					for (n = 0; n < e.length; n++) F(r)
						.is(e[n]) && s.push({
							selector: e[n],
							elem: r,
							level: a
						});
					r = r.parentNode, a++
				}
				return s
			}
			var l = ye.test(e) || "string" != typeof e ? F(e, t || this.context) : 0;
			for (n = 0, i = this.length; n < i; n++)
				for (r = this[n]; r;) {
					if (l ? -1 < l.index(r) : F.find.matchesSelector(r, e)) {
						s.push(r);
						break
					}
					if (!(r = r.parentNode) || !r.ownerDocument || r === t || 11 === r.nodeType) break
				}
			return s = 1 < s.length ? F.unique(s) : s, this.pushStack(s, "closest", e)
		},
		index: function(e) {
			return e ? "string" == typeof e ? F.inArray(this[0], F(e)) : F.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.prevAll()
				.length : -1
		},
		add: function(e, t) {
			var n = "string" == typeof e ? F(e, t) : F.makeArray(e && e.nodeType ? [e] : e),
				i = F.merge(this.get(), n);
			return this.pushStack(be(n[0]) || be(i[0]) ? i : F.unique(i))
		},
		andSelf: function() {
			return this.add(this.prevObject)
		}
	}), F.each({
		parent: function(e) {
			var t = e.parentNode;
			return t && 11 !== t.nodeType ? t : null
		},
		parents: function(e) {
			return F.dir(e, "parentNode")
		},
		parentsUntil: function(e, t, n) {
			return F.dir(e, "parentNode", n)
		},
		next: function(e) {
			return F.nth(e, 2, "nextSibling")
		},
		prev: function(e) {
			return F.nth(e, 2, "previousSibling")
		},
		nextAll: function(e) {
			return F.dir(e, "nextSibling")
		},
		prevAll: function(e) {
			return F.dir(e, "previousSibling")
		},
		nextUntil: function(e, t, n) {
			return F.dir(e, "nextSibling", n)
		},
		prevUntil: function(e, t, n) {
			return F.dir(e, "previousSibling", n)
		},
		siblings: function(e) {
			return F.sibling((e.parentNode || {})
				.firstChild, e)
		},
		children: function(e) {
			return F.sibling(e.firstChild)
		},
		contents: function(e) {
			return F.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : F.makeArray(e.childNodes)
		}
	}, function(i, s) {
		F.fn[i] = function(e, t) {
			var n = F.map(this, s, e);
			return fe.test(i) || (t = e), t && "string" == typeof t && (n = F.filter(t, n)), n = 1 < this.length && !ve[i] ? F.unique(n) : n, (1 < this.length || me.test(t)) && pe.test(i) && (n = n.reverse()), this.pushStack(n, i, he.call(arguments)
				.join(","))
		}
	}), F.extend({
		filter: function(e, t, n) {
			return n && (e = ":not(" + e + ")"), 1 === t.length ? F.find.matchesSelector(t[0], e) ? [t[0]] : [] : F.find.matches(e, t)
		},
		dir: function(e, t, n) {
			for (var i = [], s = e[t]; s && 9 !== s.nodeType && (n === E || 1 !== s.nodeType || !F(s)
				.is(n));) 1 === s.nodeType && i.push(s), s = s[t];
			return i
		},
		nth: function(e, t, n, i) {
			t = t || 1;
			for (var s = 0; e && (1 !== e.nodeType || ++s !== t); e = e[n]);
			return e
		},
		sibling: function(e, t) {
			for (var n = []; e; e = e.nextSibling) 1 === e.nodeType && e !== t && n.push(e);
			return n
		}
	});
	var we = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
		Te = / jQuery\d+="(?:\d+|null)"/g,
		ke = /^\s+/,
		Ie = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
		Ee = /<([\w:]+)/,
		Se = /<tbody/i,
		Ne = /<|&#?\w+;/,
		Le = /<(?:script|style)/i,
		Be = /<(?:script|object|embed|option|style)/i,
		Me = new RegExp("<(?:" + we + ")[\\s/>]", "i"),
		Ce = /checked\s*(?:[^=]|=\s*.checked.)/i,
		Pe = /\/(java|ecma)script/i,
		Ae = /^\s*<!(?:\[CDATA\[|\-\-)/,
		Fe = {
			option: [1, "<select multiple='multiple'>", "</select>"],
			legend: [1, "<fieldset>", "</fieldset>"],
			thead: [1, "<table>", "</table>"],
			tr: [2, "<table><tbody>", "</tbody></table>"],
			td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
			col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
			area: [1, "<map>", "</map>"],
			_default: [0, "", ""]
		},
		De = _e(C);

	function He(e, t) {
		if (1 === t.nodeType && F.hasData(e)) {
			var n, i, s, r = F._data(e),
				a = F._data(t, r),
				l = r.events;
			if (l)
				for (n in delete a.handle, a.events = {}, l)
					for (i = 0, s = l[n].length; i < s; i++) F.event.add(t, n, l[n][i]);
			a.data && (a.data = F.extend({}, a.data))
		}
	}

	function je(e, t) {
		var n;
		1 === t.nodeType && (t.clearAttributes && t.clearAttributes(), t.mergeAttributes && t.mergeAttributes(e), "object" === (n = t.nodeName.toLowerCase()) ? t.outerHTML = e.outerHTML : "input" !== n || "checkbox" !== e.type && "radio" !== e.type ? "option" === n ? t.selected = e.defaultSelected : "input" === n || "textarea" === n ? t.defaultValue = e.defaultValue : "script" === n && t.text !== e.text && (t.text = e.text) : (e.checked && (t.defaultChecked = t.checked = e.checked), t.value !== e.value && (t.value = e.value)), t.removeAttribute(F.expando), t.removeAttribute("_submit_attached"), t.removeAttribute("_change_attached"))
	}

	function Oe(e) {
		return void 0 !== e.getElementsByTagName ? e.getElementsByTagName("*") : void 0 !== e.querySelectorAll ? e.querySelectorAll("*") : []
	}

	function Re(e) {
		"checkbox" !== e.type && "radio" !== e.type || (e.defaultChecked = e.checked)
	}

	function qe(e) {
		var t = (e.nodeName || "")
			.toLowerCase();
		"input" === t ? Re(e) : "script" !== t && void 0 !== e.getElementsByTagName && F.grep(e.getElementsByTagName("input"), Re)
	}
	Fe.optgroup = Fe.option, Fe.tbody = Fe.tfoot = Fe.colgroup = Fe.caption = Fe.thead, Fe.th = Fe.td, F.support.htmlSerialize || (Fe._default = [1, "div<div>", "</div>"]), F.fn.extend({
		text: function(e) {
			return F.access(this, function(e) {
				return e === E ? F.text(this) : this.empty()
					.append((this[0] && this[0].ownerDocument || C)
						.createTextNode(e))
			}, null, e, arguments.length)
		},
		wrapAll: function(t) {
			if (F.isFunction(t)) return this.each(function(e) {
				F(this)
					.wrapAll(t.call(this, e))
			});
			if (this[0]) {
				var e = F(t, this[0].ownerDocument)
					.eq(0)
					.clone(!0);
				this[0].parentNode && e.insertBefore(this[0]), e.map(function() {
						for (var e = this; e.firstChild && 1 === e.firstChild.nodeType;) e = e.firstChild;
						return e
					})
					.append(this)
			}
			return this
		},
		wrapInner: function(n) {
			return F.isFunction(n) ? this.each(function(e) {
				F(this)
					.wrapInner(n.call(this, e))
			}) : this.each(function() {
				var e = F(this),
					t = e.contents();
				t.length ? t.wrapAll(n) : e.append(n)
			})
		},
		wrap: function(t) {
			var n = F.isFunction(t);
			return this.each(function(e) {
				F(this)
					.wrapAll(n ? t.call(this, e) : t)
			})
		},
		unwrap: function() {
			return this.parent()
				.each(function() {
					F.nodeName(this, "body") || F(this)
						.replaceWith(this.childNodes)
				})
				.end()
		},
		append: function() {
			return this.domManip(arguments, !0, function(e) {
				1 === this.nodeType && this.appendChild(e)
			})
		},
		prepend: function() {
			return this.domManip(arguments, !0, function(e) {
				1 === this.nodeType && this.insertBefore(e, this.firstChild)
			})
		},
		before: function() {
			if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, function(e) {
				this.parentNode.insertBefore(e, this)
			});
			if (arguments.length) {
				var e = F.clean(arguments);
				return e.push.apply(e, this.toArray()), this.pushStack(e, "before", arguments)
			}
		},
		after: function() {
			if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, function(e) {
				this.parentNode.insertBefore(e, this.nextSibling)
			});
			if (arguments.length) {
				var e = this.pushStack(this, "after", arguments);
				return e.push.apply(e, F.clean(arguments)), e
			}
		},
		remove: function(e, t) {
			for (var n, i = 0; null != (n = this[i]); i++) e && !F.filter(e, [n])
				.length || (t || 1 !== n.nodeType || (F.cleanData(n.getElementsByTagName("*")), F.cleanData([n])), n.parentNode && n.parentNode.removeChild(n));
			return this
		},
		empty: function() {
			for (var e, t = 0; null != (e = this[t]); t++)
				for (1 === e.nodeType && F.cleanData(e.getElementsByTagName("*")); e.firstChild;) e.removeChild(e.firstChild);
			return this
		},
		clone: function(e, t) {
			return e = null != e && e, t = null == t ? e : t, this.map(function() {
				return F.clone(this, e, t)
			})
		},
		html: function(e) {
			return F.access(this, function(e) {
				var t = this[0] || {},
					n = 0,
					i = this.length;
				if (e === E) return 1 === t.nodeType ? t.innerHTML.replace(Te, "") : null;
				if ("string" == typeof e && !Le.test(e) && (F.support.leadingWhitespace || !ke.test(e)) && !Fe[(Ee.exec(e) || ["", ""])[1].toLowerCase()]) {
					e = e.replace(Ie, "<$1></$2>");
					try {
						for (; n < i; n++) 1 === (t = this[n] || {})
							.nodeType && (F.cleanData(t.getElementsByTagName("*")), t.innerHTML = e);
						t = 0
					} catch (e) {}
				}
				t && this.empty()
					.append(e)
			}, null, e, arguments.length)
		},
		replaceWith: function(i) {
			return this[0] && this[0].parentNode ? F.isFunction(i) ? this.each(function(e) {
				var t = F(this),
					n = t.html();
				t.replaceWith(i.call(this, e, n))
			}) : ("string" != typeof i && (i = F(i)
				.detach()), this.each(function() {
				var e = this.nextSibling,
					t = this.parentNode;
				F(this)
					.remove(), e ? F(e)
					.before(i) : F(t)
					.append(i)
			})) : this.length ? this.pushStack(F(F.isFunction(i) ? i() : i), "replaceWith", i) : this
		},
		detach: function(e) {
			return this.remove(e, !0)
		},
		domManip: function(n, i, s) {
			var e, t, r, a, l, o = n[0],
				d = [];
			if (!F.support.checkClone && 3 === arguments.length && "string" == typeof o && Ce.test(o)) return this.each(function() {
				F(this)
					.domManip(n, i, s, !0)
			});
			if (F.isFunction(o)) return this.each(function(e) {
				var t = F(this);
				n[0] = o.call(this, e, i ? t.html() : E), t.domManip(n, i, s)
			});
			if (this[0]) {
				if (a = o && o.parentNode, t = 1 === (r = (e = F.support.parentNode && a && 11 === a.nodeType && a.childNodes.length === this.length ? {
							fragment: a
						} : F.buildFragment(n, this, d))
						.fragment)
					.childNodes.length ? r = r.firstChild : r.firstChild) {
					i = i && F.nodeName(t, "tr");
					for (var u = 0, c = this.length, f = c - 1; u < c; u++) s.call(i ? (l = this[u], F.nodeName(l, "table") ? l.getElementsByTagName("tbody")[0] || l.appendChild(l.ownerDocument.createElement("tbody")) : l) : this[u], e.cacheable || 1 < c && u < f ? F.clone(r, !0, !0) : r)
				}
				d.length && F.each(d, function(e, t) {
					t.src ? F.ajax({
						type: "GET",
						global: !1,
						url: t.src,
						async: !1,
						dataType: "script"
					}) : F.globalEval((t.text || t.textContent || t.innerHTML || "")
						.replace(Ae, "/*$0*/")), t.parentNode && t.parentNode.removeChild(t)
				})
			}
			return this
		}
	}), F.buildFragment = function(e, t, n) {
		var i, s, r, a, l = e[0];
		return t && t[0] && (a = t[0].ownerDocument || t[0]), a.createDocumentFragment || (a = C), !(1 === e.length && "string" == typeof l && l.length < 512 && a === C && "<" === l.charAt(0)) || Be.test(l) || !F.support.checkClone && Ce.test(l) || !F.support.html5Clone && Me.test(l) || (s = !0, (r = F.fragments[l]) && 1 !== r && (i = r)), i || (i = a.createDocumentFragment(), F.clean(e, a, i, n)), s && (F.fragments[l] = r ? i : 1), {
			fragment: i,
			cacheable: s
		}
	}, F.fragments = {}, F.each({
		appendTo: "append",
		prependTo: "prepend",
		insertBefore: "before",
		insertAfter: "after",
		replaceAll: "replaceWith"
	}, function(l, o) {
		F.fn[l] = function(e) {
			var t = [],
				n = F(e),
				i = 1 === this.length && this[0].parentNode;
			if (i && 11 === i.nodeType && 1 === i.childNodes.length && 1 === n.length) return n[o](this[0]), this;
			for (var s = 0, r = n.length; s < r; s++) {
				var a = (0 < s ? this.clone(!0) : this)
					.get();
				F(n[s])[o](a), t = t.concat(a)
			}
			return this.pushStack(t, l, n.selector)
		}
	}), F.extend({
		clone: function(e, t, n) {
			var i, s, r, a, l, o = F.support.html5Clone || F.isXMLDoc(e) || !Me.test("<" + e.nodeName + ">") ? e.cloneNode(!0) : (a = e, l = C.createElement("div"), De.appendChild(l), l.innerHTML = a.outerHTML, l.firstChild);
			if (!(F.support.noCloneEvent && F.support.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || F.isXMLDoc(e)))
				for (je(e, o), i = Oe(e), s = Oe(o), r = 0; i[r]; ++r) s[r] && je(i[r], s[r]);
			if (t && (He(e, o), n))
				for (i = Oe(e), s = Oe(o), r = 0; i[r]; ++r) He(i[r], s[r]);
			return i = s = null, o
		},
		clean: function(e, t, n, i) {
			var s, r, a, l = [];
			void 0 === (t = t || C)
				.createElement && (t = t.ownerDocument || t[0] && t[0].ownerDocument || C);
			for (var o, d = 0; null != (o = e[d]); d++)
				if ("number" == typeof o && (o += ""), o) {
					if ("string" == typeof o)
						if (Ne.test(o)) {
							o = o.replace(Ie, "<$1></$2>");
							var u, c = (Ee.exec(o) || ["", ""])[1].toLowerCase(),
								f = Fe[c] || Fe._default,
								p = f[0],
								m = t.createElement("div"),
								g = De.childNodes;
							for (t === C ? De.appendChild(m) : _e(t)
								.appendChild(m), m.innerHTML = f[1] + o + f[2]; p--;) m = m.lastChild;
							if (!F.support.tbody) {
								var h = Se.test(o),
									y = "table" !== c || h ? "<table>" !== f[1] || h ? [] : m.childNodes : m.firstChild && m.firstChild.childNodes;
								for (a = y.length - 1; 0 <= a; --a) F.nodeName(y[a], "tbody") && !y[a].childNodes.length && y[a].parentNode.removeChild(y[a])
							}!F.support.leadingWhitespace && ke.test(o) && m.insertBefore(t.createTextNode(ke.exec(o)[0]), m.firstChild), o = m.childNodes, m && (m.parentNode.removeChild(m), 0 < g.length && (u = g[g.length - 1]) && u.parentNode && u.parentNode.removeChild(u))
						} else o = t.createTextNode(o);
					var v;
					if (!F.support.appendChecked)
						if (o[0] && "number" == typeof(v = o.length))
							for (a = 0; a < v; a++) qe(o[a]);
						else qe(o);
					o.nodeType ? l.push(o) : l = F.merge(l, o)
				} if (n)
				for (s = function(e) {
					return !e.type || Pe.test(e.type)
				}, d = 0; l[d]; d++)
					if (r = l[d], i && F.nodeName(r, "script") && (!r.type || Pe.test(r.type))) i.push(r.parentNode ? r.parentNode.removeChild(r) : r);
					else {
						if (1 === r.nodeType) {
							var b = F.grep(r.getElementsByTagName("script"), s);
							l.splice.apply(l, [d + 1, 0].concat(b))
						}
						n.appendChild(r)
					} return l
		},
		cleanData: function(e) {
			for (var t, n, i, s = F.cache, r = F.event.special, a = F.support.deleteExpando, l = 0; null != (i = e[l]); l++)
				if ((!i.nodeName || !F.noData[i.nodeName.toLowerCase()]) && (n = i[F.expando])) {
					if ((t = s[n]) && t.events) {
						for (var o in t.events) r[o] ? F.event.remove(i, o) : F.removeEvent(i, o, t.handle);
						t.handle && (t.handle.elem = null)
					}
					a ? delete i[F.expando] : i.removeAttribute && i.removeAttribute(F.expando), delete s[n]
				}
		}
	});
	var $e, Xe, ze, We = /alpha\([^)]*\)/i,
		Ye = /opacity=([^)]*)/,
		Ue = /([A-Z]|^ms)/g,
		Ve = /^[\-+]?(?:\d*\.)?\d+$/i,
		Qe = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,
		Ge = /^([\-+])=([\-+.\de]+)/,
		Ke = /^margin/,
		Ze = {
			position: "absolute",
			visibility: "hidden",
			display: "block"
		},
		Je = ["Top", "Right", "Bottom", "Left"];

	function et(e, t, n) {
		var i = "width" === t ? e.offsetWidth : e.offsetHeight,
			s = "width" === t ? 1 : 0;
		if (0 < i) {
			if ("border" !== n)
				for (; s < 4; s += 2) n || (i -= parseFloat(F.css(e, "padding" + Je[s])) || 0), "margin" === n ? i += parseFloat(F.css(e, n + Je[s])) || 0 : i -= parseFloat(F.css(e, "border" + Je[s] + "Width")) || 0;
			return i + "px"
		}
		if (((i = $e(e, t)) < 0 || null == i) && (i = e.style[t]), Qe.test(i)) return i;
		if (i = parseFloat(i) || 0, n)
			for (; s < 4; s += 2) i += parseFloat(F.css(e, "padding" + Je[s])) || 0, "padding" !== n && (i += parseFloat(F.css(e, "border" + Je[s] + "Width")) || 0), "margin" === n && (i += parseFloat(F.css(e, n + Je[s])) || 0);
		return i + "px"
	}
	F.fn.css = function(e, t) {
		return F.access(this, function(e, t, n) {
			return n !== E ? F.style(e, t, n) : F.css(e, t)
		}, e, t, 1 < arguments.length)
	}, F.extend({
		cssHooks: {
			opacity: {
				get: function(e, t) {
					if (t) {
						var n = $e(e, "opacity");
						return "" === n ? "1" : n
					}
					return e.style.opacity
				}
			}
		},
		cssNumber: {
			fillOpacity: !0,
			fontWeight: !0,
			lineHeight: !0,
			opacity: !0,
			orphans: !0,
			widows: !0,
			zIndex: !0,
			zoom: !0
		},
		cssProps: {
			float: F.support.cssFloat ? "cssFloat" : "styleFloat"
		},
		style: function(e, t, n, i) {
			if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) {
				var s, r, a = F.camelCase(t),
					l = e.style,
					o = F.cssHooks[a];
				if (t = F.cssProps[a] || a, n === E) return o && "get" in o && (s = o.get(e, !1, i)) !== E ? s : l[t];
				if ("string" == (r = typeof n) && (s = Ge.exec(n)) && (n = +(s[1] + 1) * +s[2] + parseFloat(F.css(e, t)), r = "number"), !(null == n || "number" === r && isNaN(n) || ("number" !== r || F.cssNumber[a] || (n += "px"), o && "set" in o && (n = o.set(e, n)) === E))) try {
					l[t] = n
				} catch (e) {}
			}
		},
		css: function(e, t, n) {
			var i, s;
			return t = F.camelCase(t), s = F.cssHooks[t], "cssFloat" === (t = F.cssProps[t] || t) && (t = "float"), s && "get" in s && (i = s.get(e, !0, n)) !== E ? i : $e ? $e(e, t) : void 0
		},
		swap: function(e, t, n) {
			var i, s, r = {};
			for (s in t) r[s] = e.style[s], e.style[s] = t[s];
			for (s in i = n.call(e), t) e.style[s] = r[s];
			return i
		}
	}), F.curCSS = F.css, C.defaultView && C.defaultView.getComputedStyle && (Xe = function(e, t) {
		var n, i, s, r, a = e.style;
		return t = t.replace(Ue, "-$1")
			.toLowerCase(), (i = e.ownerDocument.defaultView) && (s = i.getComputedStyle(e, null)) && ("" !== (n = s.getPropertyValue(t)) || F.contains(e.ownerDocument.documentElement, e) || (n = F.style(e, t))), !F.support.pixelMargin && s && Ke.test(t) && Qe.test(n) && (r = a.width, a.width = n, n = s.width, a.width = r), n
	}), C.documentElement.currentStyle && (ze = function(e, t) {
		var n, i, s, r = e.currentStyle && e.currentStyle[t],
			a = e.style;
		return null == r && a && (s = a[t]) && (r = s), Qe.test(r) && (n = a.left, (i = e.runtimeStyle && e.runtimeStyle.left) && (e.runtimeStyle.left = e.currentStyle.left), a.left = "fontSize" === t ? "1em" : r, r = a.pixelLeft + "px", a.left = n, i && (e.runtimeStyle.left = i)), "" === r ? "auto" : r
	}), $e = Xe || ze, F.each(["height", "width"], function(e, i) {
		F.cssHooks[i] = {
			get: function(e, t, n) {
				if (t) return 0 !== e.offsetWidth ? et(e, i, n) : F.swap(e, Ze, function() {
					return et(e, i, n)
				})
			},
			set: function(e, t) {
				return Ve.test(t) ? t + "px" : t
			}
		}
	}), F.support.opacity || (F.cssHooks.opacity = {
		get: function(e, t) {
			return Ye.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? parseFloat(RegExp.$1) / 100 + "" : t ? "1" : ""
		},
		set: function(e, t) {
			var n = e.style,
				i = e.currentStyle,
				s = F.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "",
				r = i && i.filter || n.filter || "";
			(n.zoom = 1) <= t && "" === F.trim(r.replace(We, "")) && (n.removeAttribute("filter"), i && !i.filter) || (n.filter = We.test(r) ? r.replace(We, s) : r + " " + s)
		}
	}), F(function() {
		F.support.reliableMarginRight || (F.cssHooks.marginRight = {
			get: function(e, t) {
				return F.swap(e, {
					display: "inline-block"
				}, function() {
					return t ? $e(e, "margin-right") : e.style.marginRight
				})
			}
		})
	}), F.expr && F.expr.filters && (F.expr.filters.hidden = function(e) {
		var t = e.offsetWidth,
			n = e.offsetHeight;
		return 0 === t && 0 === n || !F.support.reliableHiddenOffsets && "none" === (e.style && e.style.display || F.css(e, "display"))
	}, F.expr.filters.visible = function(e) {
		return !F.expr.filters.hidden(e)
	}), F.each({
		margin: "",
		padding: "",
		border: "Width"
	}, function(s, r) {
		F.cssHooks[s + r] = {
			expand: function(e) {
				var t, n = "string" == typeof e ? e.split(" ") : [e],
					i = {};
				for (t = 0; t < 4; t++) i[s + Je[t] + r] = n[t] || n[t - 2] || n[0];
				return i
			}
		}
	});
	var tt, nt, it = /%20/g,
		st = /\[\]$/,
		rt = /\r?\n/g,
		at = /#.*$/,
		lt = /^(.*?):[ \t]*([^\r\n]*)\r?$/gm,
		ot = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
		dt = /^(?:GET|HEAD)$/,
		ut = /^\/\//,
		ct = /\?/,
		ft = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
		pt = /^(?:select|textarea)/i,
		mt = /\s+/,
		gt = /([?&])_=[^&]*/,
		ht = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
		yt = F.fn.load,
		vt = {},
		bt = {},
		xt = ["*/"] + ["*"];
	try {
		tt = A.href
	} catch (e) {
		(tt = C.createElement("a"))
		.href = "", tt = tt.href
	}

	function _t(l) {
		return function(e, t) {
			if ("string" != typeof e && (t = e, e = "*"), F.isFunction(t))
				for (var n, i, s = e.toLowerCase()
					.split(mt), r = 0, a = s.length; r < a; r++) n = s[r], (i = /^\+/.test(n)) && (n = n.substr(1) || "*"), (l[n] = l[n] || [])[i ? "unshift" : "push"](t)
		}
	}

	function wt(e, t, n, i, s, r) {
		(r = r || {})[s = s || t.dataTypes[0]] = !0;
		for (var a, l = e[s], o = 0, d = l ? l.length : 0, u = e === vt; o < d && (u || !a); o++) "string" == typeof(a = l[o](t, n, i)) && (a = !u || r[a] ? E : (t.dataTypes.unshift(a), wt(e, t, n, i, a, r)));
		return !u && a || r["*"] || (a = wt(e, t, n, i, "*", r)), a
	}

	function Tt(e, t) {
		var n, i, s = F.ajaxSettings.flatOptions || {};
		for (n in t) t[n] !== E && ((s[n] ? e : i = i || {})[n] = t[n]);
		i && F.extend(!0, e, i)
	}

	function kt(n, e, i, s) {
		if (F.isArray(e)) F.each(e, function(e, t) {
			i || st.test(n) ? s(n, t) : kt(n + "[" + ("object" == typeof t ? e : "") + "]", t, i, s)
		});
		else if (i || "object" !== F.type(e)) s(n, e);
		else
			for (var t in e) kt(n + "[" + t + "]", e[t], i, s)
	}
	nt = ht.exec(tt.toLowerCase()) || [], F.fn.extend({
		load: function(e, t, i) {
			if ("string" != typeof e && yt) return yt.apply(this, arguments);
			if (!this.length) return this;
			var n = e.indexOf(" ");
			if (0 <= n) {
				var s = e.slice(n, e.length);
				e = e.slice(0, n)
			}
			var r = "GET";
			t && (F.isFunction(t) ? (i = t, t = E) : "object" == typeof t && (t = F.param(t, F.ajaxSettings.traditional), r = "POST"));
			var a = this;
			return F.ajax({
				url: e,
				type: r,
				dataType: "html",
				data: t,
				complete: function(e, t, n) {
					n = e.responseText, e.isResolved() && (e.done(function(e) {
						n = e
					}), a.html(s ? F("<div>")
						.append(n.replace(ft, ""))
						.find(s) : n)), i && a.each(i, [n, t, e])
				}
			}), this
		},
		serialize: function() {
			return F.param(this.serializeArray())
		},
		serializeArray: function() {
			return this.map(function() {
					return this.elements ? F.makeArray(this.elements) : this
				})
				.filter(function() {
					return this.name && !this.disabled && (this.checked || pt.test(this.nodeName) || ot.test(this.type))
				})
				.map(function(e, n) {
					var t = F(this)
						.val();
					return null == t ? null : F.isArray(t) ? F.map(t, function(e, t) {
						return {
							name: n.name,
							value: e.replace(rt, "\r\n")
						}
					}) : {
						name: n.name,
						value: t.replace(rt, "\r\n")
					}
				})
				.get()
		}
	}), F.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function(e, t) {
		F.fn[t] = function(e) {
			return this.on(t, e)
		}
	}), F.each(["get", "post"], function(e, s) {
		F[s] = function(e, t, n, i) {
			return F.isFunction(t) && (i = i || n, n = t, t = E), F.ajax({
				type: s,
				url: e,
				data: t,
				success: n,
				dataType: i
			})
		}
	}), F.extend({
		getScript: function(e, t) {
			return F.get(e, E, t, "script")
		},
		getJSON: function(e, t, n) {
			return F.get(e, t, n, "json")
		},
		ajaxSetup: function(e, t) {
			return t ? Tt(e, F.ajaxSettings) : (t = e, e = F.ajaxSettings), Tt(e, t), e
		},
		ajaxSettings: {
			url: tt,
			isLocal: /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/.test(nt[1]),
			global: !0,
			type: "GET",
			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
			processData: !0,
			async: !0,
			accepts: {
				xml: "application/xml, text/xml",
				html: "text/html",
				text: "text/plain",
				json: "application/json, text/javascript",
				"*": xt
			},
			contents: {
				xml: /xml/,
				html: /html/,
				json: /json/
			},
			responseFields: {
				xml: "responseXML",
				text: "responseText"
			},
			converters: {
				"* text": x.String,
				"text html": !0,
				"text json": F.parseJSON,
				"text xml": F.parseXML
			},
			flatOptions: {
				context: !0,
				url: !0
			}
		},
		ajaxPrefilter: _t(vt),
		ajaxTransport: _t(bt),
		ajax: function(e, t) {
			"object" == typeof e && (t = e, e = E), t = t || {};
			var c, f, n, p, m, i, g, s, h = F.ajaxSetup({}, t),
				y = h.context || h,
				v = y !== h && (y.nodeType || y instanceof F) ? F(y) : F.event,
				b = F.Deferred(),
				x = F.Callbacks("once memory"),
				_ = h.statusCode || {},
				r = {},
				a = {},
				w = 0,
				T = {
					readyState: 0,
					setRequestHeader: function(e, t) {
						if (!w) {
							var n = e.toLowerCase();
							e = a[n] = a[n] || e, r[e] = t
						}
						return this
					},
					getAllResponseHeaders: function() {
						return 2 === w ? f : null
					},
					getResponseHeader: function(e) {
						var t;
						if (2 === w) {
							if (!n)
								for (n = {}; t = lt.exec(f);) n[t[1].toLowerCase()] = t[2];
							t = n[e.toLowerCase()]
						}
						return t === E ? null : t
					},
					overrideMimeType: function(e) {
						return w || (h.mimeType = e), this
					},
					abort: function(e) {
						return e = e || "abort", p && p.abort(e), l(0, e), this
					}
				};

			function l(e, t, n, i) {
				if (2 !== w) {
					w = 2, m && clearTimeout(m), p = E, f = i || "", T.readyState = 0 < e ? 4 : 0;
					var s, r, a, l, o, d = t,
						u = n ? function(e, t, n) {
							var i, s, r, a, l = e.contents,
								o = e.dataTypes,
								d = e.responseFields;
							for (s in d) s in n && (t[d[s]] = n[s]);
							for (;
								"*" === o[0];) o.shift(), i === E && (i = e.mimeType || t.getResponseHeader("content-type"));
							if (i)
								for (s in l)
									if (l[s] && l[s].test(i)) {
										o.unshift(s);
										break
									} if (o[0] in n) r = o[0];
							else {
								for (s in n) {
									if (!o[0] || e.converters[s + " " + o[0]]) {
										r = s;
										break
									}
									a = a || s
								}
								r = r || a
							}
							if (r) return r !== o[0] && o.unshift(r), n[r]
						}(h, T, n) : E;
					if (200 <= e && e < 300 || 304 === e)
						if (h.ifModified && ((l = T.getResponseHeader("Last-Modified")) && (F.lastModified[c] = l), (o = T.getResponseHeader("Etag")) && (F.etag[c] = o)), 304 === e) d = "notmodified", s = !0;
						else try {
							r = function(e, t) {
								e.dataFilter && (t = e.dataFilter(t, e.dataType));
								var n, i, s, r, a, l, o, d, u = e.dataTypes,
									c = {},
									f = u.length,
									p = u[0];
								for (n = 1; n < f; n++) {
									if (1 === n)
										for (i in e.converters) "string" == typeof i && (c[i.toLowerCase()] = e.converters[i]);
									if (r = p, "*" === (p = u[n])) p = r;
									else if ("*" !== r && r !== p) {
										if (!(l = c[a = r + " " + p] || c["* " + p]))
											for (o in d = E, c)
												if (((s = o.split(" "))[0] === r || "*" === s[0]) && (d = c[s[1] + " " + p])) {
													!0 === (o = c[o]) ? l = d : !0 === d && (l = o);
													break
												} l || d || F.error("No conversion from " + a.replace(" ", " to ")), !0 !== l && (t = l ? l(t) : d(o(t)))
									}
								}
								return t
							}(h, u), d = "success", s = !0
						} catch (e) {
							d = "parsererror", a = e
						} else(a = d) && !e || (d = "error", e < 0 && (e = 0));
					T.status = e, T.statusText = "" + (t || d), s ? b.resolveWith(y, [r, d, T]) : b.rejectWith(y, [T, d, a]), T.statusCode(_), _ = E, g && v.trigger("ajax" + (s ? "Success" : "Error"), [T, h, s ? r : a]), x.fireWith(y, [T, d]), g && (v.trigger("ajaxComplete", [T, h]), --F.active || F.event.trigger("ajaxStop"))
				}
			}
			if (b.promise(T), T.success = T.done, T.error = T.fail, T.complete = x.add, T.statusCode = function(e) {
					var t;
					if (e)
						if (w < 2)
							for (t in e) _[t] = [_[t], e[t]];
						else t = e[T.status], T.then(t, t);
					return this
				}, h.url = ((e || h.url) + "")
				.replace(at, "")
				.replace(ut, nt[1] + "//"), h.dataTypes = F.trim(h.dataType || "*")
				.toLowerCase()
				.split(mt), null == h.crossDomain && (i = ht.exec(h.url.toLowerCase()), h.crossDomain = !(!i || i[1] == nt[1] && i[2] == nt[2] && (i[3] || ("http:" === i[1] ? 80 : 443)) == (nt[3] || ("http:" === nt[1] ? 80 : 443)))), h.data && h.processData && "string" != typeof h.data && (h.data = F.param(h.data, h.traditional)), wt(vt, h, t, T), 2 === w) return !1;
			if (g = h.global, h.type = h.type.toUpperCase(), h.hasContent = !dt.test(h.type), g && 0 == F.active++ && F.event.trigger("ajaxStart"), !h.hasContent && (h.data && (h.url += (ct.test(h.url) ? "&" : "?") + h.data, delete h.data), c = h.url, !1 === h.cache)) {
				var o = F.now(),
					d = h.url.replace(gt, "$1_=" + o);
				h.url = d + (d === h.url ? (ct.test(h.url) ? "&" : "?") + "_=" + o : "")
			}
			for (s in (h.data && h.hasContent && !1 !== h.contentType || t.contentType) && T.setRequestHeader("Content-Type", h.contentType), h.ifModified && (c = c || h.url, F.lastModified[c] && T.setRequestHeader("If-Modified-Since", F.lastModified[c]), F.etag[c] && T.setRequestHeader("If-None-Match", F.etag[c])), T.setRequestHeader("Accept", h.dataTypes[0] && h.accepts[h.dataTypes[0]] ? h.accepts[h.dataTypes[0]] + ("*" !== h.dataTypes[0] ? ", " + xt + "; q=0.01" : "") : h.accepts["*"]), h.headers) T.setRequestHeader(s, h.headers[s]);
			if (h.beforeSend && (!1 === h.beforeSend.call(y, T, h) || 2 === w)) return T.abort(), !1;
			for (s in {
				success: 1,
				error: 1,
				complete: 1
			}) T[s](h[s]);
			if (p = wt(bt, h, t, T)) {
				T.readyState = 1, g && v.trigger("ajaxSend", [T, h]), h.async && 0 < h.timeout && (m = setTimeout(function() {
					T.abort("timeout")
				}, h.timeout));
				try {
					w = 1, p.send(r, l)
				} catch (e) {
					if (!(w < 2)) throw e;
					l(-1, e)
				}
			} else l(-1, "No Transport");
			return T
		},
		param: function(e, t) {
			function n(e, t) {
				t = F.isFunction(t) ? t() : t, i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
			}
			var i = [];
			if (t === E && (t = F.ajaxSettings.traditional), F.isArray(e) || e.jquery && !F.isPlainObject(e)) F.each(e, function() {
				n(this.name, this.value)
			});
			else
				for (var s in e) kt(s, e[s], t, n);
			return i.join("&")
				.replace(it, "+")
		}
	}), F.extend({
		active: 0,
		lastModified: {},
		etag: {}
	});
	var It = F.now(),
		Et = /(\=)\?(&|$)|\?\?/i;
	F.ajaxSetup({
		jsonp: "callback",
		jsonpCallback: function() {
			return F.expando + "_" + It++
		}
	}), F.ajaxPrefilter("json jsonp", function(e, t, n) {
		var i = "string" == typeof e.data && /^application\/x\-www\-form\-urlencoded/.test(e.contentType);
		if ("jsonp" === e.dataTypes[0] || !1 !== e.jsonp && (Et.test(e.url) || i && Et.test(e.data))) {
			var s, r = e.jsonpCallback = F.isFunction(e.jsonpCallback) ? e.jsonpCallback() : e.jsonpCallback,
				a = x[r],
				l = e.url,
				o = e.data,
				d = "$1" + r + "$2";
			return !1 !== e.jsonp && (l = l.replace(Et, d), e.url === l && (i && (o = o.replace(Et, d)), e.data === o && (l += (/\?/.test(l) ? "&" : "?") + e.jsonp + "=" + r))), e.url = l, e.data = o, x[r] = function(e) {
				s = [e]
			}, n.always(function() {
				x[r] = a, s && F.isFunction(a) && x[r](s[0])
			}), e.converters["script json"] = function() {
				return s || F.error(r + " was not called"), s[0]
			}, e.dataTypes[0] = "json", "script"
		}
	}), F.ajaxSetup({
		accepts: {
			script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
		},
		contents: {
			script: /javascript|ecmascript/
		},
		converters: {
			"text script": function(e) {
				return F.globalEval(e), e
			}
		}
	}), F.ajaxPrefilter("script", function(e) {
		e.cache === E && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1)
	}), F.ajaxTransport("script", function(t) {
		if (t.crossDomain) {
			var i, s = C.head || C.getElementsByTagName("head")[0] || C.documentElement;
			return {
				send: function(e, n) {
					(i = C.createElement("script"))
					.async = "async", t.scriptCharset && (i.charset = t.scriptCharset), i.src = t.url, i.onload = i.onreadystatechange = function(e, t) {
						!t && i.readyState && !/loaded|complete/.test(i.readyState) || (i.onload = i.onreadystatechange = null, s && i.parentNode && s.removeChild(i), i = E, t || n(200, "success"))
					}, s.insertBefore(i, s.firstChild)
				},
				abort: function() {
					i && i.onload(0, 1)
				}
			}
		}
	});
	var St, Nt, Lt = !!x.ActiveXObject && function() {
			for (var e in St) St[e](0, 1)
		},
		Bt = 0;

	function Mt() {
		try {
			return new x.XMLHttpRequest
		} catch (e) {}
	}
	F.ajaxSettings.xhr = x.ActiveXObject ? function() {
		return !this.isLocal && Mt() || function() {
			try {
				return new x.ActiveXObject("Microsoft.XMLHTTP")
			} catch (e) {}
		}()
	} : Mt, Nt = F.ajaxSettings.xhr(), F.extend(F.support, {
		ajax: !!Nt,
		cors: !!Nt && "withCredentials" in Nt
	}), F.support.ajax && F.ajaxTransport(function(u) {
		var c;
		if (!u.crossDomain || F.support.cors) return {
			send: function(e, l) {
				var o, t, d = u.xhr();
				if (u.username ? d.open(u.type, u.url, u.async, u.username, u.password) : d.open(u.type, u.url, u.async), u.xhrFields)
					for (t in u.xhrFields) d[t] = u.xhrFields[t];
				u.mimeType && d.overrideMimeType && d.overrideMimeType(u.mimeType), u.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest");
				try {
					for (t in e) d.setRequestHeader(t, e[t])
				} catch (e) {}
				d.send(u.hasContent && u.data || null), c = function(e, t) {
					var n, i, s, r, a;
					try {
						if (c && (t || 4 === d.readyState))
							if (c = E, o && (d.onreadystatechange = F.noop, Lt && delete St[o]), t) 4 !== d.readyState && d.abort();
							else {
								n = d.status, s = d.getAllResponseHeaders(), r = {}, (a = d.responseXML) && a.documentElement && (r.xml = a);
								try {
									r.text = d.responseText
								} catch (e) {}
								try {
									i = d.statusText
								} catch (e) {
									i = ""
								}
								n || !u.isLocal || u.crossDomain ? 1223 === n && (n = 204) : n = r.text ? 200 : 404
							}
					} catch (e) {
						t || l(-1, e)
					}
					r && l(n, i, r, s)
				}, u.async && 4 !== d.readyState ? (o = ++Bt, Lt && (St || (St = {}, F(x)
					.unload(Lt)), St[o] = c), d.onreadystatechange = c) : c()
			},
			abort: function() {
				c && c(0, 1)
			}
		}
	});
	var Ct, Pt, At, Ft, Dt = {},
		Ht = /^(?:toggle|show|hide)$/,
		jt = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
		Ot = [
			["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"],
			["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"],
			["opacity"]
		];

	function Rt() {
		return setTimeout(qt, 0), Ft = F.now()
	}

	function qt() {
		Ft = E
	}

	function $t(e, t) {
		var n = {};
		return F.each(Ot.concat.apply([], Ot.slice(0, t)), function() {
			n[this] = e
		}), n
	}

	function Xt(e) {
		if (!Dt[e]) {
			var t = C.body,
				n = F("<" + e + ">")
				.appendTo(t),
				i = n.css("display");
			n.remove(), "none" !== i && "" !== i || (Ct || ((Ct = C.createElement("iframe"))
				.frameBorder = Ct.width = Ct.height = 0), t.appendChild(Ct), Pt && Ct.createElement || ((Pt = (Ct.contentWindow || Ct.contentDocument)
					.document)
				.write((F.support.boxModel ? "<!doctype html>" : "") + "<html><body>"), Pt.close()), n = Pt.createElement(e), Pt.body.appendChild(n), i = F.css(n, "display"), t.removeChild(Ct)), Dt[e] = i
		}
		return Dt[e]
	}
	F.fn.extend({
		show: function(e, t, n) {
			var i, s;
			if (e || 0 === e) return this.animate($t("show", 3), e, t, n);
			for (var r = 0, a = this.length; r < a; r++)(i = this[r])
				.style && (s = i.style.display, F._data(i, "olddisplay") || "none" !== s || (s = i.style.display = ""), ("" !== s || "none" !== F.css(i, "display")) && F.contains(i.ownerDocument.documentElement, i) || F._data(i, "olddisplay", Xt(i.nodeName)));
			for (r = 0; r < a; r++)(i = this[r])
				.style && ("" !== (s = i.style.display) && "none" !== s || (i.style.display = F._data(i, "olddisplay") || ""));
			return this
		},
		hide: function(e, t, n) {
			if (e || 0 === e) return this.animate($t("hide", 3), e, t, n);
			for (var i, s, r = 0, a = this.length; r < a; r++)(i = this[r])
				.style && ("none" === (s = F.css(i, "display")) || F._data(i, "olddisplay") || F._data(i, "olddisplay", s));
			for (r = 0; r < a; r++) this[r].style && (this[r].style.display = "none");
			return this
		},
		_toggle: F.fn.toggle,
		toggle: function(t, e, n) {
			var i = "boolean" == typeof t;
			return F.isFunction(t) && F.isFunction(e) ? this._toggle.apply(this, arguments) : null == t || i ? this.each(function() {
				var e = i ? t : F(this)
					.is(":hidden");
				F(this)[e ? "show" : "hide"]()
			}) : this.animate($t("toggle", 3), t, e, n), this
		},
		fadeTo: function(e, t, n, i) {
			return this.filter(":hidden")
				.css("opacity", 0)
				.show()
				.end()
				.animate({
					opacity: t
				}, e, n, i)
		},
		animate: function(m, e, t, n) {
			var g = F.speed(e, t, n);
			if (F.isEmptyObject(m)) return this.each(g.complete, [!1]);

			function i() {
				!1 === g.queue && F._mark(this);
				var e, t, n, i, s, r, a, l, o, d, u, c = F.extend({}, g),
					f = 1 === this.nodeType,
					p = f && F(this)
					.is(":hidden");
				for (n in c.animatedProperties = {}, m)
					if (n !== (e = F.camelCase(n)) && (m[e] = m[n], delete m[n]), (s = F.cssHooks[e]) && "expand" in s)
						for (n in r = s.expand(m[e]), delete m[e], r) n in m || (m[n] = r[n]);
				for (e in m) {
					if (t = m[e], F.isArray(t) ? (c.animatedProperties[e] = t[1], t = m[e] = t[0]) : c.animatedProperties[e] = c.specialEasing && c.specialEasing[e] || c.easing || "swing", "hide" === t && p || "show" === t && !p) return c.complete.call(this);
					!f || "height" !== e && "width" !== e || (c.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY], "inline" === F.css(this, "display") && "none" === F.css(this, "float") && (F.support.inlineBlockNeedsLayout && "inline" !== Xt(this.nodeName) ? this.style.zoom = 1 : this.style.display = "inline-block"))
				}
				for (n in null != c.overflow && (this.style.overflow = "hidden"), m) i = new F.fx(this, c, n), t = m[n], Ht.test(t) ? (u = F._data(this, "toggle" + n) || ("toggle" === t ? p ? "show" : "hide" : 0)) ? (F._data(this, "toggle" + n, "show" === u ? "hide" : "show"), i[u]()) : i[t]() : (a = jt.exec(t), l = i.cur(), a ? (o = parseFloat(a[2]), "px" !== (d = a[3] || (F.cssNumber[n] ? "" : "px")) && (F.style(this, n, (o || 1) + d), l = (o || 1) / i.cur() * l, F.style(this, n, l + d)), a[1] && (o = ("-=" === a[1] ? -1 : 1) * o + l), i.custom(l, o, d)) : i.custom(l, t, ""));
				return !0
			}
			return m = F.extend({}, m), !1 === g.queue ? this.each(i) : this.queue(g.queue, i)
		},
		stop: function(r, e, a) {
			return "string" != typeof r && (a = e, e = r, r = E), e && !1 !== r && this.queue(r || "fx", []), this.each(function() {
				var e, t = !1,
					n = F.timers,
					i = F._data(this);

				function s(e, t, n) {
					var i = t[n];
					F.removeData(e, n, !0), i.stop(a)
				}
				if (a || F._unmark(!0, this), null == r)
					for (e in i) i[e] && i[e].stop && e.indexOf(".run") === e.length - 4 && s(this, i, e);
				else i[e = r + ".run"] && i[e].stop && s(this, i, e);
				for (e = n.length; e--;) n[e].elem !== this || null != r && n[e].queue !== r || (a ? n[e](!0) : n[e].saveState(), t = !0, n.splice(e, 1));
				a && t || F.dequeue(this, r)
			})
		}
	}), F.each({
		slideDown: $t("show", 1),
		slideUp: $t("hide", 1),
		slideToggle: $t("toggle", 1),
		fadeIn: {
			opacity: "show"
		},
		fadeOut: {
			opacity: "hide"
		},
		fadeToggle: {
			opacity: "toggle"
		}
	}, function(e, i) {
		F.fn[e] = function(e, t, n) {
			return this.animate(i, e, t, n)
		}
	}), F.extend({
		speed: function(e, t, n) {
			var i = e && "object" == typeof e ? F.extend({}, e) : {
				complete: n || !n && t || F.isFunction(e) && e,
				duration: e,
				easing: n && t || t && !F.isFunction(t) && t
			};
			return i.duration = F.fx.off ? 0 : "number" == typeof i.duration ? i.duration : i.duration in F.fx.speeds ? F.fx.speeds[i.duration] : F.fx.speeds._default, null != i.queue && !0 !== i.queue || (i.queue = "fx"), i.old = i.complete, i.complete = function(e) {
				F.isFunction(i.old) && i.old.call(this), i.queue ? F.dequeue(this, i.queue) : !1 !== e && F._unmark(this)
			}, i
		},
		easing: {
			linear: function(e) {
				return e
			},
			swing: function(e) {
				return -Math.cos(e * Math.PI) / 2 + .5
			}
		},
		timers: [],
		fx: function(e, t, n) {
			this.options = t, this.elem = e, this.prop = n, t.orig = t.orig || {}
		}
	}), F.fx.prototype = {
		update: function() {
			this.options.step && this.options.step.call(this.elem, this.now, this), (F.fx.step[this.prop] || F.fx.step._default)(this)
		},
		cur: function() {
			if (null != this.elem[this.prop] && (!this.elem.style || null == this.elem.style[this.prop])) return this.elem[this.prop];
			var e, t = F.css(this.elem, this.prop);
			return isNaN(e = parseFloat(t)) ? t && "auto" !== t ? t : 0 : e
		},
		custom: function(e, t, n) {
			var i = this,
				s = F.fx;

			function r(e) {
				return i.step(e)
			}
			this.startTime = Ft || Rt(), this.end = t, this.now = this.start = e, this.pos = this.state = 0, this.unit = n || this.unit || (F.cssNumber[this.prop] ? "" : "px"), r.queue = this.options.queue, r.elem = this.elem, r.saveState = function() {
				F._data(i.elem, "fxshow" + i.prop) === E && (i.options.hide ? F._data(i.elem, "fxshow" + i.prop, i.start) : i.options.show && F._data(i.elem, "fxshow" + i.prop, i.end))
			}, r() && F.timers.push(r) && !At && (At = setInterval(s.tick, s.interval))
		},
		show: function() {
			var e = F._data(this.elem, "fxshow" + this.prop);
			this.options.orig[this.prop] = e || F.style(this.elem, this.prop), this.options.show = !0, e !== E ? this.custom(this.cur(), e) : this.custom("width" === this.prop || "height" === this.prop ? 1 : 0, this.cur()), F(this.elem)
				.show()
		},
		hide: function() {
			this.options.orig[this.prop] = F._data(this.elem, "fxshow" + this.prop) || F.style(this.elem, this.prop), this.options.hide = !0, this.custom(this.cur(), 0)
		},
		step: function(e) {
			var t, n, i, s = Ft || Rt(),
				r = !0,
				a = this.elem,
				l = this.options;
			if (e || s >= l.duration + this.startTime) {
				for (t in this.now = this.end, this.pos = this.state = 1, this.update(), l.animatedProperties[this.prop] = !0, l.animatedProperties) !0 !== l.animatedProperties[t] && (r = !1);
				if (r) {
					if (null == l.overflow || F.support.shrinkWrapBlocks || F.each(["", "X", "Y"], function(e, t) {
							a.style["overflow" + t] = l.overflow[e]
						}), l.hide && F(a)
						.hide(), l.hide || l.show)
						for (t in l.animatedProperties) F.style(a, t, l.orig[t]), F.removeData(a, "fxshow" + t, !0), F.removeData(a, "toggle" + t, !0);
					(i = l.complete) && (l.complete = !1, i.call(a))
				}
				return !1
			}
			return l.duration == 1 / 0 ? this.now = s : (n = s - this.startTime, this.state = n / l.duration, this.pos = F.easing[l.animatedProperties[this.prop]](this.state, n, 0, 1, l.duration), this.now = this.start + (this.end - this.start) * this.pos), this.update(), !0
		}
	}, F.extend(F.fx, {
		tick: function() {
			for (var e, t = F.timers, n = 0; n < t.length; n++)(e = t[n])() || t[n] !== e || t.splice(n--, 1);
			t.length || F.fx.stop()
		},
		interval: 13,
		stop: function() {
			clearInterval(At), At = null
		},
		speeds: {
			slow: 600,
			fast: 200,
			_default: 400
		},
		step: {
			opacity: function(e) {
				F.style(e.elem, "opacity", e.now)
			},
			_default: function(e) {
				e.elem.style && null != e.elem.style[e.prop] ? e.elem.style[e.prop] = e.now + e.unit : e.elem[e.prop] = e.now
			}
		}
	}), F.each(Ot.concat.apply([], Ot), function(e, t) {
		t.indexOf("margin") && (F.fx.step[t] = function(e) {
			F.style(e.elem, t, Math.max(0, e.now) + e.unit)
		})
	}), F.expr && F.expr.filters && (F.expr.filters.animated = function(t) {
		return F.grep(F.timers, function(e) {
				return t === e.elem
			})
			.length
	});
	var zt, Wt = /^t(?:able|d|h)$/i,
		Yt = /^(?:body|html)$/i;

	function Ut(e) {
		return F.isWindow(e) ? e : 9 === e.nodeType && (e.defaultView || e.parentWindow)
	}
	zt = "getBoundingClientRect" in C.documentElement ? function(e, t, n, i) {
		try {
			i = e.getBoundingClientRect()
		} catch (e) {}
		if (!i || !F.contains(n, e)) return i ? {
			top: i.top,
			left: i.left
		} : {
			top: 0,
			left: 0
		};
		var s = t.body,
			r = Ut(t),
			a = n.clientTop || s.clientTop || 0,
			l = n.clientLeft || s.clientLeft || 0,
			o = r.pageYOffset || F.support.boxModel && n.scrollTop || s.scrollTop,
			d = r.pageXOffset || F.support.boxModel && n.scrollLeft || s.scrollLeft;
		return {
			top: i.top + o - a,
			left: i.left + d - l
		}
	} : function(e, t, n) {
		for (var i, s = e.offsetParent, r = t.body, a = t.defaultView, l = a ? a.getComputedStyle(e, null) : e.currentStyle, o = e.offsetTop, d = e.offsetLeft;
			(e = e.parentNode) && e !== r && e !== n && (!F.support.fixedPosition || "fixed" !== l.position);) i = a ? a.getComputedStyle(e, null) : e.currentStyle, o -= e.scrollTop, d -= e.scrollLeft, e === s && (o += e.offsetTop, d += e.offsetLeft, !F.support.doesNotAddBorder || F.support.doesAddBorderForTableAndCells && Wt.test(e.nodeName) || (o += parseFloat(i.borderTopWidth) || 0, d += parseFloat(i.borderLeftWidth) || 0), s = e.offsetParent), F.support.subtractsBorderForOverflowNotVisible && "visible" !== i.overflow && (o += parseFloat(i.borderTopWidth) || 0, d += parseFloat(i.borderLeftWidth) || 0), l = i;
		return "relative" !== l.position && "static" !== l.position || (o += r.offsetTop, d += r.offsetLeft), F.support.fixedPosition && "fixed" === l.position && (o += Math.max(n.scrollTop, r.scrollTop), d += Math.max(n.scrollLeft, r.scrollLeft)), {
			top: o,
			left: d
		}
	}, F.fn.offset = function(t) {
		if (arguments.length) return t === E ? this : this.each(function(e) {
			F.offset.setOffset(this, t, e)
		});
		var e = this[0],
			n = e && e.ownerDocument;
		return n ? e === n.body ? F.offset.bodyOffset(e) : zt(e, n, n.documentElement) : null
	}, F.offset = {
		bodyOffset: function(e) {
			var t = e.offsetTop,
				n = e.offsetLeft;
			return F.support.doesNotIncludeMarginInBodyOffset && (t += parseFloat(F.css(e, "marginTop")) || 0, n += parseFloat(F.css(e, "marginLeft")) || 0), {
				top: t,
				left: n
			}
		},
		setOffset: function(e, t, n) {
			var i = F.css(e, "position");
			"static" === i && (e.style.position = "relative");
			var s, r, a = F(e),
				l = a.offset(),
				o = F.css(e, "top"),
				d = F.css(e, "left"),
				u = {},
				c = {};
			r = ("absolute" === i || "fixed" === i) && -1 < F.inArray("auto", [o, d]) ? (s = (c = a.position())
				.top, c.left) : (s = parseFloat(o) || 0, parseFloat(d) || 0), F.isFunction(t) && (t = t.call(e, n, l)), null != t.top && (u.top = t.top - l.top + s), null != t.left && (u.left = t.left - l.left + r), "using" in t ? t.using.call(e, u) : a.css(u)
		}
	}, F.fn.extend({
		position: function() {
			if (!this[0]) return null;
			var e = this[0],
				t = this.offsetParent(),
				n = this.offset(),
				i = Yt.test(t[0].nodeName) ? {
					top: 0,
					left: 0
				} : t.offset();
			return n.top -= parseFloat(F.css(e, "marginTop")) || 0, n.left -= parseFloat(F.css(e, "marginLeft")) || 0, i.top += parseFloat(F.css(t[0], "borderTopWidth")) || 0, i.left += parseFloat(F.css(t[0], "borderLeftWidth")) || 0, {
				top: n.top - i.top,
				left: n.left - i.left
			}
		},
		offsetParent: function() {
			return this.map(function() {
				for (var e = this.offsetParent || C.body; e && !Yt.test(e.nodeName) && "static" === F.css(e, "position");) e = e.offsetParent;
				return e
			})
		}
	}), F.each({
		scrollLeft: "pageXOffset",
		scrollTop: "pageYOffset"
	}, function(t, s) {
		var r = /Y/.test(s);
		F.fn[t] = function(e) {
			return F.access(this, function(e, t, n) {
				var i = Ut(e);
				if (n === E) return i ? s in i ? i[s] : F.support.boxModel && i.document.documentElement[t] || i.document.body[t] : e[t];
				i ? i.scrollTo(r ? F(i)
					.scrollLeft() : n, r ? n : F(i)
					.scrollTop()) : e[t] = n
			}, t, e, arguments.length, null)
		}
	}), F.each({
		Height: "height",
		Width: "width"
	}, function(e, n) {
		var l = "client" + e,
			o = "scroll" + e,
			d = "offset" + e;
		F.fn["inner" + e] = function() {
			var e = this[0];
			return e ? e.style ? parseFloat(F.css(e, n, "padding")) : this[n]() : null
		}, F.fn["outer" + e] = function(e) {
			var t = this[0];
			return t ? t.style ? parseFloat(F.css(t, n, e ? "margin" : "border")) : this[n]() : null
		}, F.fn[n] = function(e) {
			return F.access(this, function(e, t, n) {
				var i, s, r, a;
				return F.isWindow(e) ? (s = (i = e.document)
						.documentElement[l], F.support.boxModel && s || i.body && i.body[l] || s) : 9 === e.nodeType ? (i = e.documentElement)[l] >= i[o] ? i[l] : Math.max(e.body[o], i[o], e.body[d], i[d]) : n === E ? (r = F.css(e, t), a = parseFloat(r), F.isNumeric(a) ? a : r) : void F(e)
					.css(t, n)
			}, n, e, arguments.length, null)
		}
	}), x.jQuery = x.$ = F, "function" == typeof define && define.amd && define.amd.jQuery && define("jquery", [], function() {
		return F
	})
}(window), (window._gsQueue || (window._gsQueue = []))
.push(function() {
		"use strict";
		window._gsDefine("plugins.CSSPlugin", ["plugins.TweenPlugin", "TweenLite"], function(r, f) {
			var m, k, I, p, J = function() {
					r.call(this, "css"), this._overwriteProps.length = 0, this.setRatio = J.prototype.setRatio
				},
				g = {},
				e = J.prototype = new r("css");

			function a(e, t) {
				return t.toUpperCase()
			}

			function l(e) {
				return O.test("string" == typeof e ? e : (e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? parseFloat(RegExp.$1) / 100 : 1
			}

			function h(e) {
				window.console && console.log(e)
			}

			function E(e, t) {
				var n, i, s = (t = t || K)
					.style;
				if (void 0 !== s[e]) return e;
				for (e = e.charAt(0)
					.toUpperCase() + e.substr(1), n = ["O", "Moz", "ms", "Ms", "Webkit"], i = 5; - 1 < --i && void 0 === s[n[i] + e];);
				return 0 <= i ? (ie = "-" + (se = 3 === i ? "ms" : n[i])
					.toLowerCase() + "-", se + e) : null
			}

			function y(e, t, n) {
				if ("absolute" !== ae(e, "position", n)) return 0;
				var i = "left" === t ? "Left" : "Top",
					s = ae(e, "margin" + i, n);
				return e["offset" + i] - (le(e, t, parseFloat(s), s.replace(j, "")) || 0)
			}

			function v(e, t) {
				var n, i, s = {};
				if (t = t || re(e, null))
					if (n = t.length)
						for (; - 1 < --n;) s[t[n].replace($, a)] = t.getPropertyValue(t[n]);
					else
						for (n in t) s[n] = t[n];
				else if (t = e.currentStyle || e.style)
					for (n in t) s[n.replace($, a)] = t[n];
				return ne || (s.opacity = l(e)), i = ke(e, t, !1), s.rotation = i.rotation * V, s.skewX = i.skewX * V, s.scaleX = i.scaleX, s.scaleY = i.scaleY, s.x = i.x, s.y = i.y, Le && (s.z = i.z, s.rotationX = i.rotationX * V, s.rotationY = i.rotationY * V, s.scaleZ = i.scaleZ), s.filters && delete s.filters, s
			}

			function b(e, t, n, i, s) {
				var r, a, l, o = {},
					d = e.style;
				for (a in n) "cssText" !== a && "length" !== a && isNaN(a) && (t[a] !== (r = n[a]) || s && s[a]) && -1 === a.indexOf("Origin") && ("number" != typeof r && "string" != typeof r || (o[a] = "auto" !== r || "left" !== a && "top" !== a ? "" !== r && "auto" !== r && "none" !== r || "string" != typeof t[a] || "" === t[a].replace(u, "") ? r : 0 : y(e, a), void 0 !== d[a] && (l = new me(d, a, d[a], l))));
				if (i)
					for (a in i) "className" !== a && (o[a] = i[a]);
				return {
					difs: o,
					firstMPT: l
				}
			}

			function x(e, t, n) {
				var i = parseFloat("width" === t ? e.offsetWidth : e.offsetHeight),
					s = oe[t],
					r = s.length;
				for (n = n || re(e, null); - 1 < --r;) i -= parseFloat(ae(e, "padding" + s[r], n, !0)) || 0, i -= parseFloat(ae(e, "border" + s[r] + "Width", n, !0)) || 0;
				return i
			}

			function _(e, t) {
				null != e && "" !== e && "auto" !== e && "auto auto" !== e || (e = "0 0");
				var n = e.split(" "),
					i = -1 !== e.indexOf("left") ? "0%" : -1 !== e.indexOf("right") ? "100%" : n[0],
					s = -1 !== e.indexOf("top") ? "0%" : -1 !== e.indexOf("bottom") ? "100%" : n[1];
				return null == s ? s = "0" : "center" === s && (s = "50%"), ("center" === i || isNaN(parseFloat(i)) && -1 === (i + "")
					.indexOf("=")) && (i = "50%"), t && (t.oxp = -1 !== i.indexOf("%"), t.oyp = -1 !== s.indexOf("%"), t.oxr = "=" === i.charAt(1), t.oyr = "=" === s.charAt(1), t.ox = parseFloat(i.replace(u, "")), t.oy = parseFloat(s.replace(u, ""))), i + " " + s + (2 < n.length ? " " + n[2] : "")
			}

			function S(e, t) {
				return "string" == typeof e && "=" === e.charAt(1) ? parseInt(e.charAt(0) + "1", 10) * parseFloat(e.substr(2)) : parseFloat(e) - parseFloat(t)
			}

			function w(e, t) {
				return null == e ? t : "string" == typeof e && "=" === e.charAt(1) ? parseInt(e.charAt(0) + "1", 10) * Number(e.substr(2)) + t : parseFloat(e)
			}

			function T(e, t, n, i) {
				var s, r, a, l;
				return (l = null == e ? t : "number" == typeof e ? e * U : (s = 2 * Math.PI, r = e.split("_"), a = Number(r[0].replace(u, "")) * (-1 === e.indexOf("rad") ? U : 1) - ("=" === e.charAt(1) ? 0 : t), r.length && (i && (i[n] = t + a), -1 !== e.indexOf("short") && (a %= s) != a % (s / 2) && (a = a < 0 ? a + s : a - s), -1 !== e.indexOf("_cw") && a < 0 ? a = (a + 9999999999 * s) % s - (a / s | 0) * s : -1 !== e.indexOf("ccw") && 0 < a && (a = (a - 9999999999 * s) % s - (a / s | 0) * s)), t + a)) < 1e-6 && -1e-6 < l && (l = 0), l
			}

			function o(e, t, n) {
				return 255 * (6 * (e = e < 0 ? e + 1 : 1 < e ? e - 1 : e) < 1 ? t + (n - t) * e * 6 : e < .5 ? n : 3 * e < 2 ? t + (n - t) * (2 / 3 - e) * 6 : t) + .5 | 0
			}

			function N(e) {
				var t, n, i, s, r, a;
				return e && "" !== e ? "number" == typeof e ? [e >> 16, e >> 8 & 255, 255 & e] : ("," === e.charAt(e.length - 1) && (e = e.substr(0, e.length - 1)), ue[e] ? ue[e] : "#" === e.charAt(0) ? (4 === e.length && (e = "#" + (t = e.charAt(1)) + t + (n = e.charAt(2)) + n + (i = e.charAt(3)) + i), [(e = parseInt(e.substr(1), 16)) >> 16, e >> 8 & 255, 255 & e]) : ("hsl" === e.substr(0, 3) ? (e = e.match(F), s = Number(e[0]) % 360 / 360, r = Number(e[1]) / 100, t = 2 * (a = Number(e[2]) / 100) - (n = a <= .5 ? a * (1 + r) : a + r - a * r), 3 < e.length && (e[3] = Number(e[3])), e[0] = o(s + 1 / 3, t, n), e[1] = o(s, t, n), e[2] = o(s - 1 / 3, t, n)) : ((e = e.match(F) || ue.transparent)[0] = Number(e[0]), e[1] = Number(e[1]), e[2] = Number(e[2]), 3 < e.length && (e[3] = Number(e[3]))), e)) : ue.black
			}(e.constructor = J)
			.version = "1.10.2", J.API = 2, J.defaultTransformPerspective = 0, e = "px", J.suffixMap = {
				top: e,
				right: e,
				bottom: e,
				left: e,
				width: e,
				height: e,
				fontSize: e,
				padding: e,
				margin: e,
				perspective: e
			};
			var L, B, M, A, C, P, t, n, i, F = /(?:\d|\-\d|\.\d|\-\.\d)+/g,
				D = /(?:\d|\-\d|\.\d|\-\.\d|\+=\d|\-=\d|\+=.\d|\-=\.\d)+/g,
				H = /(?:\+=|\-=|\-|\b)[\d\-\.]+[a-zA-Z0-9]*(?:%|\b)/gi,
				u = /[^\d\-\.]/g,
				j = /(?:\d|\-|\+|=|#|\.)*/g,
				O = /opacity *= *([^)]*)/,
				R = /opacity:([^;]*)/,
				d = /alpha\(opacity *=.+?\)/i,
				q = /^(rgb|hsl)/,
				c = /([A-Z])/g,
				$ = /-([a-z])/gi,
				X = /(^(?:url\(\"|url\())|(?:(\"\))$|\)$)/gi,
				z = /(?:Left|Right|Width)/i,
				ee = /(M11|M12|M21|M22)=[\d\-\.e]+/gi,
				W = /progid\:DXImageTransform\.Microsoft\.Matrix\(.+?\)/i,
				Y = /,(?=[^\)]*(?:\(|$))/gi,
				U = Math.PI / 180,
				V = 180 / Math.PI,
				Q = {},
				G = document,
				K = G.createElement("div"),
				Z = G.createElement("img"),
				s = J._internals = {
					_specialProps: g
				},
				te = navigator.userAgent,
				ne = (n = te.indexOf("Android"), i = G.createElement("div"), M = -1 !== te.indexOf("Safari") && -1 === te.indexOf("Chrome") && (-1 === n || 3 < Number(te.substr(n + 8, 1))), C = M && Number(te.substr(te.indexOf("Version/") + 8, 1)) < 6, A = -1 !== te.indexOf("Firefox"), /MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(te), P = parseFloat(RegExp.$1), i.innerHTML = "<a style='top:1px;opacity:.55;'>a</a>", !!(t = i.getElementsByTagName("a")[0]) && /^0.55/.test(t.style.opacity)),
				ie = "",
				se = "",
				re = G.defaultView ? G.defaultView.getComputedStyle : function() {},
				ae = J.getStyle = function(e, t, n, i, s) {
					var r;
					return ne || "opacity" !== t ? (!i && e.style[t] ? r = e.style[t] : (n = n || re(e, null)) ? r = (e = n.getPropertyValue(t.replace(c, "-$1")
						.toLowerCase())) || n.length ? e : n[t] : e.currentStyle && (r = e.currentStyle[t]), null == s || r && "none" !== r && "auto" !== r && "auto auto" !== r ? r : s) : l(e)
				},
				le = function(e, t, n, i, s) {
					if ("px" === i || !i) return n;
					if ("auto" === i || !n) return 0;
					var r, a = z.test(t),
						l = e,
						o = K.style,
						d = n < 0;
					return d && (n = -n), "%" === i && -1 !== t.indexOf("border") ? r = n / 100 * (a ? e.clientWidth : e.clientHeight) : (o.cssText = "border-style:solid; border-width:0; position:absolute; line-height:0;", "%" !== i && l.appendChild ? o[a ? "borderLeftWidth" : "borderTopWidth"] = n + i : (l = e.parentNode || G.body, o[a ? "width" : "height"] = n + i), l.appendChild(K), r = parseFloat(K[a ? "offsetWidth" : "offsetHeight"]), l.removeChild(K), 0 !== r || s || (r = le(e, t, n, i, !0))), d ? -r : r
				},
				oe = {
					width: ["Left", "Right"],
					height: ["Top", "Bottom"]
				},
				de = ["marginLeft", "marginRight", "marginTop", "marginBottom"],
				ue = {
					aqua: [0, 255, 255],
					lime: [0, 255, 0],
					silver: [192, 192, 192],
					black: [0, 0, 0],
					maroon: [128, 0, 0],
					teal: [0, 128, 128],
					blue: [0, 0, 255],
					navy: [0, 0, 128],
					white: [255, 255, 255],
					fuchsia: [255, 0, 255],
					olive: [128, 128, 0],
					yellow: [255, 255, 0],
					orange: [255, 165, 0],
					gray: [128, 128, 128],
					purple: [128, 0, 128],
					green: [0, 128, 0],
					red: [255, 0, 0],
					pink: [255, 192, 203],
					cyan: [0, 255, 255],
					transparent: [255, 255, 255, 0]
				},
				ce = "(?:\\b(?:(?:rgb|rgba|hsl|hsla)\\(.+?\\))|\\B#.+?\\b";
			for (e in ue) ce += "|" + e + "\\b";

			function fe(e, t, r, a) {
				if (null == e) return function(e) {
					return e
				};
				var l, o = t ? (e.match(ce) || [""])[0] : "",
					d = e.split(o)
					.join("")
					.match(H) || [],
					u = e.substr(0, e.indexOf(d[0])),
					c = ")" === e.charAt(e.length - 1) ? ")" : "",
					f = -1 !== e.indexOf(" ") ? " " : ",",
					p = d.length,
					m = 0 < p ? d[0].replace(F, "") : "";
				return p ? l = t ? function(e) {
					var t, n, i, s;
					if ("number" == typeof e) e += m;
					else if (a && Y.test(e)) {
						for (s = e.replace(Y, "|")
							.split("|"), i = 0; i < s.length; i++) s[i] = l(s[i]);
						return s.join(",")
					}
					if (t = (e.match(ce) || [o])[0], i = (n = e.split(t)
							.join("")
							.match(H) || [])
						.length, p > i--)
						for (; ++i < p;) n[i] = r ? n[(i - 1) / 2 | 0] : d[i];
					return u + n.join(f) + f + t + c + (-1 !== e.indexOf("inset") ? " inset" : "")
				} : function(e) {
					var t, n, i;
					if ("number" == typeof e) e += m;
					else if (a && Y.test(e)) {
						for (n = e.replace(Y, "|")
							.split("|"), i = 0; i < n.length; i++) n[i] = l(n[i]);
						return n.join(",")
					}
					if (i = (t = e.match(H) || [])
						.length, p > i--)
						for (; ++i < p;) t[i] = r ? t[(i - 1) / 2 | 0] : d[i];
					return u + t.join(f) + c
				} : function(e) {
					return e
				}
			}

			function pe(d) {
				return d = d.split(","),
					function(e, t, n, i, s, r, a) {
						var l, o = (t + "")
							.split(" ");
						for (a = {}, l = 0; l < 4; l++) a[d[l]] = o[l] = o[l] || o[(l - 1) / 2 >> 0];
						return i.parse(e, a, s, r)
					}
			}
			ce = new RegExp(ce + ")", "gi"), s._setPluginRatio = function(e) {
				this.plugin.setRatio(e);
				for (var t, n, i, s, r = this.data, a = r.proxy, l = r.firstMPT; l;) t = a[l.v], l.r ? t = 0 < t ? t + .5 | 0 : t - .5 | 0 : t < 1e-6 && -1e-6 < t && (t = 0), l.t[l.p] = t, l = l._next;
				if (r.autoRotate && (r.autoRotate.rotation = a.rotation), 1 === e)
					for (l = r.firstMPT; l;) {
						if ((n = l.t)
							.type) {
							if (1 === n.type) {
								for (s = n.xs0 + n.s + n.xs1, i = 1; i < n.l; i++) s += n["xn" + i] + n["xs" + (i + 1)];
								n.e = s
							}
						} else n.e = n.s + n.xs0;
						l = l._next
					}
			};

			function me(e, t, n, i, s) {
				this.t = e, this.p = t, this.v = n, this.r = s, i && ((i._prev = this)
					._next = i)
			}
			var ge = (s._parseToProxy = function(e, t, n, i, s, r) {
					var a, l, o, d, u, c = i,
						f = {},
						p = {},
						m = n._transform,
						g = Q;
					for (n._transform = null, Q = t, i = u = n.parse(e, t, i, s), Q = g, r && (n._transform = m, c && (c._prev = null, c._prev && (c._prev._next = null))); i && i !== c;) {
						if (i.type <= 1 && (p[l = i.p] = i.s + i.c, f[l] = i.s, r || (d = new me(i, "s", l, d, i.r), i.c = 0), 1 === i.type))
							for (a = i.l; 0 < --a;) o = "xn" + a, p[l = i.p + "_" + o] = i.data[o], f[l] = i[o], r || (d = new me(i, o, l, d, i.rxp[o]));
						i = i._next
					}
					return {
						proxy: f,
						end: p,
						firstMPT: d,
						pt: u
					}
				}, s.CSSPropTween = function(e, t, n, i, s, r, a, l, o, d, u) {
					this.t = e, this.p = t, this.s = n, this.c = i, this.n = a || t, e instanceof ge || p.push(this.n), this.r = l, this.type = r || 0, o && (this.pr = o, m = !0), this.b = void 0 === d ? n : d, this.e = void 0 === u ? n + i : u, s && ((this._next = s)
						._prev = this)
				}),
				he = J.parseComplex = function(e, t, n, i, s, r, a, l, o, d) {
					a = new ge(e, t, 0, 0, a, d ? 2 : 1, null, !1, l, n = n || r || "", i), i += "";
					var u, c, f, p, m, g, h, y, v, b, x, _, w = n.split(", ")
						.join(",")
						.split(" "),
						T = i.split(", ")
						.join(",")
						.split(" "),
						k = w.length,
						I = !1 !== L;
					for (-1 === i.indexOf(",") && -1 === n.indexOf(",") || (w = w.join(" ")
						.replace(Y, ", ")
						.split(" "), T = T.join(" ")
						.replace(Y, ", ")
						.split(" "), k = w.length), k !== T.length && (k = (w = (r || "")
							.split(" "))
						.length), a.plugin = o, a.setRatio = d, u = 0; u < k; u++)
						if (p = w[u], m = T[u], (y = parseFloat(p)) || 0 === y) a.appendXtra("", y, S(m, y), m.replace(D, ""), I && -1 !== m.indexOf("px"), !0);
						else if (s && ("#" === p.charAt(0) || ue[p] || q.test(p))) _ = "," === m.charAt(m.length - 1) ? ")," : ")", p = N(p), m = N(m), (v = 6 < p.length + m.length) && !ne && 0 === m[3] ? (a["xs" + a.l] += a.l ? " transparent" : "transparent", a.e = a.e.split(T[u])
						.join("transparent")) : (ne || (v = !1), a.appendXtra(v ? "rgba(" : "rgb(", p[0], m[0] - p[0], ",", !0, !0)
						.appendXtra("", p[1], m[1] - p[1], ",", !0)
						.appendXtra("", p[2], m[2] - p[2], v ? "," : _, !0), v && (p = p.length < 4 ? 1 : p[3], a.appendXtra("", p, (m.length < 4 ? 1 : m[3]) - p, _, !1)));
					else if (g = p.match(F)) {
						if (!(h = m.match(D)) || h.length !== g.length) return a;
						for (c = f = 0; c < g.length; c++) x = g[c], b = p.indexOf(x, f), a.appendXtra(p.substr(f, b - f), Number(x), S(h[c], x), "", I && "px" === p.substr(b + x.length, 2), 0 === c), f = b + x.length;
						a["xs" + a.l] += p.substr(f)
					} else a["xs" + a.l] += a.l ? " " + p : p;
					if (-1 !== i.indexOf("=") && a.data) {
						for (_ = a.xs0 + a.data.s, u = 1; u < a.l; u++) _ += a["xs" + u] + a.data["xn" + u];
						a.e = _ + a["xs" + u]
					}
					return a.l || (a.type = -1, a.xs0 = a.e), a.xfirst || a
				},
				ye = 9;
			for ((e = ge.prototype)
				.l = e.pr = 0; 0 < --ye;) e["xn" + ye] = 0, e["xs" + ye] = "";

			function ve(e, t) {
				t = t || {}, this.p = t.prefix && E(e) || e, g[e] = g[this.p] = this, this.format = t.formatter || fe(t.defaultValue, t.color, t.collapsible, t.multi), t.parser && (this.parse = t.parser), this.clrs = t.color, this.multi = t.multi, this.keyword = t.keyword, this.dflt = t.defaultValue, this.pr = t.priority || 0
			}

			function be(e) {
				if (!g[e]) {
					var o = e.charAt(0)
						.toUpperCase() + e.substr(1) + "Plugin";
					xe(e, {
						parser: function(e, t, n, i, s, r, a) {
							var l = (window.GreenSockGlobals || window)
								.com.greensock.plugins[o];
							return l ? (l._cssRegister(), g[n].parse(e, t, n, i, s, r, a)) : (h("Error: " + o + " js file not loaded."), s)
						}
					})
				}
			}
			e.xs0 = "", e._next = e._prev = e.xfirst = e.data = e.plugin = e.setRatio = e.rxp = null, e.appendXtra = function(e, t, n, i, s, r) {
				var a = this,
					l = a.l;
				return a["xs" + l] += r && l ? " " + e : e || "", n || 0 === l || a.plugin ? (a.l++, a.type = a.setRatio ? 2 : 1, a["xs" + a.l] = i || "", 0 < l ? (a.data["xn" + l] = t + n, a.rxp["xn" + l] = s, a["xn" + l] = t, a.plugin || (a.xfirst = new ge(a, "xn" + l, t, n, a.xfirst || a, 0, a.n, s, a.pr), a.xfirst.xs0 = 0)) : (a.data = {
					s: t + n
				}, a.rxp = {}, a.s = t, a.c = n, a.r = s)) : a["xs" + l] += t + (i || ""), a
			};
			var xe = s._registerComplexSpecialProp = function(e, t, n) {
				"object" != typeof t && (t = {
					parser: n
				});
				var i, s = e.split(","),
					r = t.defaultValue;
				for (n = n || [r], i = 0; i < s.length; i++) t.prefix = 0 === i && t.prefix, t.defaultValue = n[i] || r, new ve(s[i], t)
			};

			function _e(e) {
				var t, n, i = this.data,
					s = -i.rotation,
					r = s + i.skewX,
					a = 1e5,
					l = (Math.cos(s) * i.scaleX * a | 0) / a,
					o = (Math.sin(s) * i.scaleX * a | 0) / a,
					d = (Math.sin(r) * -i.scaleY * a | 0) / a,
					u = (Math.cos(r) * i.scaleY * a | 0) / a,
					c = this.t.style,
					f = this.t.currentStyle;
				if (f) {
					n = o, o = -d, d = -n, t = f.filter, c.filter = "";
					var p, m, g = this.t.offsetWidth,
						h = this.t.offsetHeight,
						y = "absolute" !== f.position,
						v = "progid:DXImageTransform.Microsoft.Matrix(M11=" + l + ", M12=" + o + ", M21=" + d + ", M22=" + u,
						b = i.x,
						x = i.y;
					if (null != i.ox && (b += (p = (i.oxp ? g * i.ox * .01 : i.ox) - g / 2) - (p * l + (m = (i.oyp ? h * i.oy * .01 : i.oy) - h / 2) * o), x += m - (p * d + m * u)), y) v += ", Dx=" + ((p = g / 2) - (p * l + (m = h / 2) * o) + b) + ", Dy=" + (m - (p * d + m * u) + x) + ")";
					else {
						var _, w, T, k = P < 8 ? 1 : -1;
						for (p = i.ieOffsetX || 0, m = i.ieOffsetY || 0, i.ieOffsetX = Math.round((g - ((l < 0 ? -l : l) * g + (o < 0 ? -o : o) * h)) / 2 + b), i.ieOffsetY = Math.round((h - ((u < 0 ? -u : u) * h + (d < 0 ? -d : d) * g)) / 2 + x), ye = 0; ye < 4; ye++) T = (n = -1 !== (_ = f[w = de[ye]])
							.indexOf("px") ? parseFloat(_) : le(this.t, w, parseFloat(_), _.replace(j, "")) || 0) !== i[w] ? ye < 2 ? -i.ieOffsetX : -i.ieOffsetY : ye < 2 ? p - i.ieOffsetX : m - i.ieOffsetY, c[w] = (i[w] = Math.round(n - T * (0 === ye || 2 === ye ? 1 : k))) + "px";
						v += ", sizingMethod='auto expand')"
					} - 1 !== t.indexOf("DXImageTransform.Microsoft.Matrix(") ? c.filter = t.replace(W, v) : c.filter = v + " " + t, 0 !== e && 1 !== e || 1 == l && 0 === o && 0 === d && 1 == u && (y && -1 === v.indexOf("Dx=0, Dy=0") || O.test(t) && 100 !== parseFloat(RegExp.$1) || -1 === t.indexOf("gradient(") && c.removeAttribute("filter"))
				}
			}

			function we(e) {
				var t, n, i, s, r, a, l, o, d, u, c, f, p, m, g, h, y, v, b, x, _, w, T, k, I, E, S, N = this.data,
					L = this.t.style,
					B = N.rotation,
					M = N.scaleX,
					C = N.scaleY,
					P = N.scaleZ;
				if (A && (I = L.top ? "top" : L.bottom ? "bottom" : parseFloat(ae(this.t, "top", null, !1)) ? "bottom" : "top", _ = ae(this.t, I, null, !1), E = parseFloat(_) || 0, S = _.substr((E + "")
					.length) || "px", N._ffFix = !N._ffFix, L[I] = (N._ffFix ? E + .05 : E - .05) + S), B || N.skewX) t = b = Math.cos(B), r = x = Math.sin(B), N.skewX && (B -= N.skewX, b = Math.cos(B), x = Math.sin(B)), n = -x, a = b;
				else {
					if (!N.rotationY && !N.rotationX && 1 === P) return void(L[Ee] = "translate3d(" + N.x + "px," + N.y + "px," + N.z + "px)" + (1 !== M || 1 !== C ? " scale(" + M + "," + C + ")" : ""));
					t = a = 1, n = r = 0
				}
				c = 1, i = s = l = o = d = u = f = p = m = 0, g = (h = N.perspective) ? -1 / h : 0, y = N.zOrigin, v = 1e5, (B = N.rotationY) && (b = Math.cos(B), d = c * -(x = Math.sin(B)), p = g * -x, i = t * x, l = r * x, c *= b, g *= b, t *= b, r *= b), (B = N.rotationX) && (_ = n * (b = Math.cos(B)) + i * (x = Math.sin(B)), w = a * b + l * x, T = u * b + c * x, k = m * b + g * x, i = n * -x + i * b, l = a * -x + l * b, c = u * -x + c * b, g = m * -x + g * b, n = _, a = w, u = T, m = k), 1 !== P && (i *= P, l *= P, c *= P, g *= P), 1 !== C && (n *= C, a *= C, u *= C, m *= C), 1 !== M && (t *= M, r *= M, d *= M, p *= M), y && (s = i * (f -= y), o = l * f, f = c * f + y), s = (_ = (s += N.x) - (s |= 0)) ? (_ * v + (_ < 0 ? -.5 : .5) | 0) / v + s : s, o = (_ = (o += N.y) - (o |= 0)) ? (_ * v + (_ < 0 ? -.5 : .5) | 0) / v + o : o, f = (_ = (f += N.z) - (f |= 0)) ? (_ * v + (_ < 0 ? -.5 : .5) | 0) / v + f : f, L[Ee] = "matrix3d(" + [(t * v | 0) / v, (r * v | 0) / v, (d * v | 0) / v, (p * v | 0) / v, (n * v | 0) / v, (a * v | 0) / v, (u * v | 0) / v, (m * v | 0) / v, (i * v | 0) / v, (l * v | 0) / v, (c * v | 0) / v, (g * v | 0) / v, s, o, f, h ? 1 + -f / h : 1].join(",") + ")"
			}

			function Te(e) {
				var t, n, i, s, r, a, l, o, d = this.data,
					u = this.t,
					c = u.style;
				A && (t = c.top ? "top" : c.bottom ? "bottom" : parseFloat(ae(u, "top", null, !1)) ? "bottom" : "top", n = ae(u, t, null, !1), i = parseFloat(n) || 0, s = n.substr((i + "")
					.length) || "px", d._ffFix = !d._ffFix, c[t] = (d._ffFix ? i + .05 : i - .05) + s), d.rotation || d.skewX ? (a = (r = d.rotation) - d.skewX, l = 1e5 * d.scaleX, o = 1e5 * d.scaleY, c[Ee] = "matrix(" + (Math.cos(r) * l | 0) / 1e5 + "," + (Math.sin(r) * l | 0) / 1e5 + "," + (Math.sin(a) * -o | 0) / 1e5 + "," + (Math.cos(a) * o | 0) / 1e5 + "," + d.x + "," + d.y + ")") : c[Ee] = "matrix(" + d.scaleX + ",0,0," + d.scaleY + "," + d.x + "," + d.y + ")"
			}(e = ve.prototype)
			.parseComplex = function(e, t, n, i, s, r) {
				var a, l, o, d, u, c = this.keyword;
				if (this.multi && (Y.test(n) || Y.test(t) ? (l = t.replace(Y, "|")
					.split("|"), o = n.replace(Y, "|")
					.split("|")) : c && (l = [t], o = [n])), o) {
					for (d = o.length > l.length ? o.length : l.length, a = 0; a < d; a++) t = l[a] = l[a] || this.dflt, n = o[a] = o[a] || this.dflt, c && t.indexOf(c) !== (u = n.indexOf(c)) && ((n = -1 === u ? o : l)[a] += " " + c);
					t = l.join(", "), n = o.join(", ")
				}
				return he(e, this.p, t, n, this.clrs, this.dflt, i, this.pr, s, r)
			}, e.parse = function(e, t, n, i, s, r, a) {
				return this.parseComplex(e.style, this.format(ae(e, this.p, I, !1, this.dflt)), this.format(t), s, r)
			}, J.registerSpecialProp = function(e, o, d) {
				xe(e, {
					parser: function(e, t, n, i, s, r, a) {
						var l = new ge(e, n, 0, 0, s, 2, n, !1, d);
						return l.plugin = r, l.setRatio = o(e, t, i._tween, n), l
					},
					priority: d
				})
			};

			function ke(e, t, n, i) {
				if (e._gsTransform && n && !i) return e._gsTransform;
				var s, r, a, l, o, d, u, c, f, p, m, g, h, y = n && e._gsTransform || {
						skewY: 0
					},
					v = y.scaleX < 0,
					b = 2e-5,
					x = 1e5,
					_ = 1e-4 - Math.PI,
					w = Math.PI - 1e-4,
					T = Le && (parseFloat(ae(e, Ne, t, !1, "0 0 0")
						.split(" ")[2]) || y.zOrigin) || 0;
				for (Ee ? s = ae(e, Se, t, !0) : e.currentStyle && (s = (s = e.currentStyle.filter.match(ee)) && 4 === s.length ? [s[0].substr(4), Number(s[2].substr(4)), Number(s[1].substr(4)), s[3].substr(4), y.x || 0, y.y || 0].join(",") : ""), a = (r = (s || "")
						.match(/(?:\-|\b)[\d\-\.e]+\b/gi) || [])
					.length; - 1 < --a;) l = Number(r[a]), r[a] = (o = l - (l |= 0)) ? (o * x + (o < 0 ? -.5 : .5) | 0) / x + l : l;
				if (16 === r.length) {
					var k = r[8],
						I = r[9],
						E = r[10],
						S = r[12],
						N = r[13],
						L = r[14];
					if (y.zOrigin && (S = k * (L = -y.zOrigin) - r[12], N = I * L - r[13], L = E * L + y.zOrigin - r[14]), !n || i || null == y.rotationX) {
						var B, M, C, P, A, F, D, H = r[0],
							j = r[1],
							O = r[2],
							R = r[3],
							q = r[4],
							$ = r[5],
							X = r[6],
							z = r[7],
							W = r[11],
							Y = y.rotationX = Math.atan2(X, E),
							U = Y < _ || w < Y;
						Y && (B = q * (P = Math.cos(-Y)) + k * (A = Math.sin(-Y)), M = $ * P + I * A, C = X * P + E * A, k = q * -A + k * P, I = $ * -A + I * P, E = X * -A + E * P, W = z * -A + W * P, q = B, $ = M, X = C), (Y = y.rotationY = Math.atan2(k, H)) && (F = Y < _ || w < Y, M = j * (P = Math.cos(-Y)) - I * (A = Math.sin(-Y)), C = O * P - E * A, I = j * A + I * P, E = O * A + E * P, W = R * A + W * P, H = B = H * P - k * A, j = M, O = C), (Y = y.rotation = Math.atan2(j, $)) && (D = Y < _ || w < Y, H = H * (P = Math.cos(-Y)) + q * (A = Math.sin(-Y)), M = j * P + $ * A, $ = j * -A + $ * P, X = O * -A + X * P, j = M), D && U ? y.rotation = y.rotationX = 0 : D && F ? y.rotation = y.rotationY = 0 : F && U && (y.rotationY = y.rotationX = 0), y.scaleX = (Math.sqrt(H * H + j * j) * x + .5 | 0) / x, y.scaleY = (Math.sqrt($ * $ + I * I) * x + .5 | 0) / x, y.scaleZ = (Math.sqrt(X * X + E * E) * x + .5 | 0) / x, y.skewX = 0, y.perspective = W ? 1 / (W < 0 ? -W : W) : 0, y.x = S, y.y = N, y.z = L
					}
				} else if ((!Le || i || !r.length || y.x !== r[4] || y.y !== r[5] || !y.rotationX && !y.rotationY) && (void 0 === y.x || "none" !== ae(e, "display", t))) {
					var V = 6 <= r.length,
						Q = V ? r[0] : 1,
						G = r[1] || 0,
						K = r[2] || 0,
						Z = V ? r[3] : 1;
					y.x = r[4] || 0, y.y = r[5] || 0, d = Math.sqrt(Q * Q + G * G), u = Math.sqrt(Z * Z + K * K), c = Q || G ? Math.atan2(G, Q) : y.rotation || 0, f = K || Z ? Math.atan2(K, Z) + c : y.skewX || 0, p = d - Math.abs(y.scaleX || 0), m = u - Math.abs(y.scaleY || 0), Math.abs(f) > Math.PI / 2 && Math.abs(f) < 1.5 * Math.PI && (v ? (d *= -1, f += c <= 0 ? Math.PI : -Math.PI, c += c <= 0 ? Math.PI : -Math.PI) : (u *= -1, f += f <= 0 ? Math.PI : -Math.PI)), g = (c - y.rotation) % Math.PI, h = (f - y.skewX) % Math.PI, (void 0 === y.skewX || b < p || p < -b || b < m || m < -b || _ < g && g < w && g * x | !1 || _ < h && h < w && h * x | !1) && (y.scaleX = d, y.scaleY = u, y.rotation = c, y.skewX = f), Le && (y.rotationX = y.rotationY = y.z = 0, y.perspective = parseFloat(J.defaultTransformPerspective) || 0, y.scaleZ = 1)
				}
				for (a in y.zOrigin = T, y) y[a] < b && y[a] > -b && (y[a] = 0);
				return n && (e._gsTransform = y), y
			}
			var Ie = "scaleX,scaleY,scaleZ,x,y,z,skewX,rotation,rotationX,rotationY,perspective".split(","),
				Ee = E("transform"),
				Se = ie + "transform",
				Ne = E("transformOrigin"),
				Le = null !== E("perspective");

			function Be(e) {
				var t, n = this.t,
					i = n.filter || ae(this.data, "filter"),
					s = this.s + this.c * e | 0;
				100 == s && (t = -1 === i.indexOf("atrix(") && -1 === i.indexOf("radient(") ? (n.removeAttribute("filter"), !ae(this.data, "filter")) : (n.filter = i.replace(d, ""), !0)), t || (this.xn1 && (n.filter = i = i || "alpha(opacity=" + s + ")"), -1 === i.indexOf("opacity") ? 0 == s && this.xn1 || (n.filter += " alpha(opacity=" + s + ")") : n.filter = i.replace(O, "opacity=" + s))
			}

			function Me(e, t) {
				t && (e.removeProperty ? e.removeProperty(t.replace(c, "-$1")
					.toLowerCase()) : e.removeAttribute(t))
			}

			function Ce(e) {
				if (this.t._gsClassPT = this, 1 === e || 0 === e) {
					this.t.className = 0 === e ? this.b : this.e;
					for (var t = this.data, n = this.t.style; t;) t.v ? n[t.p] = t.v : Me(n, t.p), t = t._next;
					1 === e && this.t._gsClassPT === this && (this.t._gsClassPT = null)
				} else this.t.className !== this.e && (this.t.className = this.e)
			}

			function Pe(e) {
				if ((1 === e || 0 === e) && this.data._totalTime === this.data._totalDuration) {
					if ("all" === this.e) return this.t.style.cssText = "", void(this.t._gsTransform && delete this.t._gsTransform);
					for (var t, n = this.t.style, i = this.e.split(","), s = i.length, r = g.transform.parse; - 1 < --s;) t = i[s], g[t] && (t = g[t].parse === r ? Ee : g[t].p), Me(n, t)
				}
			}
			for (xe("transform,scale,scaleX,scaleY,scaleZ,x,y,z,rotation,rotationX,rotationY,rotationZ,skewX,skewY,shortRotation,shortRotationX,shortRotationY,shortRotationZ,transformOrigin,transformPerspective,directionalRotation,parseTransform,force3D", {
				parser: function(e, t, n, i, s, r, a) {
					if (i._transform) return s;
					var l, o, d, u, c, f, p, m = i._transform = ke(e, I, !0, a.parseTransform),
						g = e.style,
						h = Ie.length,
						y = a,
						v = {};
					if ("string" == typeof y.transform && Ee) d = g.cssText, g[Ee] = y.transform, g.display = "block", l = ke(e, null, !1), g.cssText = d;
					else if ("object" == typeof y) {
						if (l = {
							scaleX: w(null != y.scaleX ? y.scaleX : y.scale, m.scaleX),
							scaleY: w(null != y.scaleY ? y.scaleY : y.scale, m.scaleY),
							scaleZ: w(null != y.scaleZ ? y.scaleZ : y.scale, m.scaleZ),
							x: w(y.x, m.x),
							y: w(y.y, m.y),
							z: w(y.z, m.z),
							perspective: w(y.transformPerspective, m.perspective)
						}, null != (p = y.directionalRotation))
							if ("object" == typeof p)
								for (d in p) y[d] = p[d];
							else y.rotation = p;
						l.rotation = T("rotation" in y ? y.rotation : "shortRotation" in y ? y.shortRotation + "_short" : "rotationZ" in y ? y.rotationZ : m.rotation * V, m.rotation, "rotation", v), Le && (l.rotationX = T("rotationX" in y ? y.rotationX : "shortRotationX" in y ? y.shortRotationX + "_short" : m.rotationX * V || 0, m.rotationX, "rotationX", v), l.rotationY = T("rotationY" in y ? y.rotationY : "shortRotationY" in y ? y.shortRotationY + "_short" : m.rotationY * V || 0, m.rotationY, "rotationY", v)), l.skewX = null == y.skewX ? m.skewX : T(y.skewX, m.skewX), l.skewY = null == y.skewY ? m.skewY : T(y.skewY, m.skewY), (o = l.skewY - m.skewY) && (l.skewX += o, l.rotation += o)
					}
					for (null != y.force3D && (m.force3D = y.force3D, f = !0), (c = m.force3D || m.z || m.rotationX || m.rotationY || l.z || l.rotationX || l.rotationY || l.perspective) || null == y.scale || (l.scaleZ = 1); - 1 < --h;)(1e-6 < (u = l[n = Ie[h]] - m[n]) || u < -1e-6 || null != Q[n]) && (f = !0, s = new ge(m, n, m[n], u, s), n in v && (s.e = v[n]), s.xs0 = 0, s.plugin = r, i._overwriteProps.push(s.n));
					return ((u = y.transformOrigin) || Le && c && m.zOrigin) && (Ee ? (f = !0, n = Ne, u = (u || ae(e, n, I, !1, "50% 50%")) + "", (s = new ge(g, n, 0, 0, s, -1, "transformOrigin"))
						.b = g[n], s.plugin = r, Le ? (d = m.zOrigin, u = u.split(" "), m.zOrigin = (2 < u.length && (0 === d || "0px" !== u[2]) ? parseFloat(u[2]) : d) || 0, s.xs0 = s.e = g[n] = u[0] + " " + (u[1] || "50%") + " 0px", (s = new ge(m, "zOrigin", 0, 0, s, -1, s.n))
							.b = d, s.xs0 = s.e = m.zOrigin) : s.xs0 = s.e = g[n] = u) : _(u + "", m)), f && (i._transformType = c || 3 === this._transformType ? 3 : 2), s
				},
				prefix: !0
			}), xe("boxShadow", {
				defaultValue: "0px 0px 0px 0px #999",
				prefix: !0,
				color: !0,
				multi: !0,
				keyword: "inset"
			}), xe("borderRadius", {
				defaultValue: "0px",
				parser: function(e, t, n, i, s, r) {
					t = this.format(t);
					var a, l, o, d, u, c, f, p, m, g, h, y, v, b, x, _, w = ["borderTopLeftRadius", "borderTopRightRadius", "borderBottomRightRadius", "borderBottomLeftRadius"],
						T = e.style;
					for (m = parseFloat(e.offsetWidth), g = parseFloat(e.offsetHeight), a = t.split(" "), l = 0; l < w.length; l++) this.p.indexOf("border") && (w[l] = E(w[l])), -1 !== (u = d = ae(e, w[l], I, !1, "0px"))
						.indexOf(" ") && (u = (d = u.split(" "))[0], d = d[1]), c = o = a[l], f = parseFloat(u), y = u.substr((f + "")
							.length), "" === (h = (v = "=" === c.charAt(1)) ? (p = parseInt(c.charAt(0) + "1", 10), c = c.substr(2), p *= parseFloat(c), c.substr((p + "")
							.length - (p < 0 ? 1 : 0)) || "") : (p = parseFloat(c), c.substr((p + "")
							.length))) && (h = k[n] || y), h !== y && (b = le(e, "borderLeft", f, y), x = le(e, "borderTop", f, y), d = "%" === h ? (u = b / m * 100 + "%", x / g * 100 + "%") : "em" === h ? (u = b / (_ = le(e, "borderLeft", 1, "em")) + "em", x / _ + "em") : (u = b + "px", x + "px"), v && (c = parseFloat(u) + p + h, o = parseFloat(d) + p + h)), s = he(T, w[l], u + " " + d, c + " " + o, !1, "0px", s);
					return s
				},
				prefix: !0,
				formatter: fe("0px 0px 0px 0px", !1, !0)
			}), xe("backgroundPosition", {
				defaultValue: "0 0",
				parser: function(e, t, n, i, s, r) {
					var a, l, o, d, u, c, f = "background-position",
						p = I || re(e, null),
						m = this.format((p ? P ? p.getPropertyValue(f + "-x") + " " + p.getPropertyValue(f + "-y") : p.getPropertyValue(f) : e.currentStyle.backgroundPositionX + " " + e.currentStyle.backgroundPositionY) || "0 0"),
						g = this.format(t);
					if (-1 !== m.indexOf("%") != (-1 !== g.indexOf("%")) && (c = ae(e, "backgroundImage")
						.replace(X, "")) && "none" !== c) {
						for (a = m.split(" "), l = g.split(" "), Z.setAttribute("src", c), o = 2; - 1 < --o;)(d = -1 !== (m = a[o])
							.indexOf("%")) != (-1 !== l[o].indexOf("%")) && (u = 0 === o ? e.offsetWidth - Z.width : e.offsetHeight - Z.height, a[o] = d ? parseFloat(m) / 100 * u + "px" : parseFloat(m) / u * 100 + "%");
						m = a.join(" ")
					}
					return this.parseComplex(e.style, m, g, s, r)
				},
				formatter: _
			}), xe("backgroundSize", {
				defaultValue: "0 0",
				formatter: _
			}), xe("perspective", {
				defaultValue: "0px",
				prefix: !0
			}), xe("perspectiveOrigin", {
				defaultValue: "50% 50%",
				prefix: !0
			}), xe("transformStyle", {
				prefix: !0
			}), xe("backfaceVisibility", {
				prefix: !0
			}), xe("margin", {
				parser: pe("marginTop,marginRight,marginBottom,marginLeft")
			}), xe("padding", {
				parser: pe("paddingTop,paddingRight,paddingBottom,paddingLeft")
			}), xe("clip", {
				defaultValue: "rect(0px,0px,0px,0px)",
				parser: function(e, t, n, i, s, r) {
					var a, l, o;
					return t = P < 9 ? (l = e.currentStyle, o = P < 8 ? " " : ",", a = "rect(" + l.clipTop + o + l.clipRight + o + l.clipBottom + o + l.clipLeft + ")", this.format(t)
						.split(",")
						.join(o)) : (a = this.format(ae(e, this.p, I, !1, this.dflt)), this.format(t)), this.parseComplex(e.style, a, t, s, r)
				}
			}), xe("textShadow", {
				defaultValue: "0px 0px 0px #999",
				color: !0,
				multi: !0
			}), xe("autoRound,strictUnits", {
				parser: function(e, t, n, i, s) {
					return s
				}
			}), xe("border", {
				defaultValue: "0px solid #000",
				parser: function(e, t, n, i, s, r) {
					return this.parseComplex(e.style, this.format(ae(e, "borderTopWidth", I, !1, "0px") + " " + ae(e, "borderTopStyle", I, !1, "solid") + " " + ae(e, "borderTopColor", I, !1, "#000")), this.format(t), s, r)
				},
				color: !0,
				formatter: function(e) {
					var t = e.split(" ");
					return t[0] + " " + (t[1] || "solid") + " " + (e.match(ce) || ["#000"])[0]
				}
			}), xe("float,cssFloat,styleFloat", {
				parser: function(e, t, n, i, s, r) {
					var a = e.style,
						l = "cssFloat" in a ? "cssFloat" : "styleFloat";
					return new ge(a, l, 0, 0, s, -1, n, !1, 0, a[l], t)
				}
			}), xe("opacity,alpha,autoAlpha", {
				defaultValue: "1",
				parser: function(e, t, n, i, s, r) {
					var a = parseFloat(ae(e, "opacity", I, !1, "1")),
						l = e.style,
						o = "autoAlpha" === n;
					return t = parseFloat(t), o && 1 === a && "hidden" === ae(e, "visibility", I) && 0 !== t && (a = 0), ne ? s = new ge(l, "opacity", a, t - a, s) : ((s = new ge(l, "opacity", 100 * a, 100 * (t - a), s))
						.xn1 = o ? 1 : 0, l.zoom = 1, s.type = 2, s.b = "alpha(opacity=" + s.s + ")", s.e = "alpha(opacity=" + (s.s + s.c) + ")", s.data = e, s.plugin = r, s.setRatio = Be), o && ((s = new ge(l, "visibility", 0, 0, s, -1, null, !1, 0, 0 !== a ? "inherit" : "hidden", 0 === t ? "hidden" : "inherit"))
						.xs0 = "inherit", i._overwriteProps.push(s.n)), s
				}
			}), xe("className", {
				parser: function(e, t, n, i, s, r, a) {
					var l, o, d, u, c, f = e.className,
						p = e.style.cssText;
					if ((s = i._classNamePT = new ge(e, n, 0, 0, s, 2))
						.setRatio = Ce, s.pr = -11, m = !0, s.b = f, o = v(e, I), d = e._gsClassPT) {
						for (u = {}, c = d.data; c;) u[c.p] = 1, c = c._next;
						d.setRatio(1)
					}
					return (e._gsClassPT = s)
						.e = "=" !== t.charAt(1) ? t : f.replace(new RegExp("\\s*\\b" + t.substr(2) + "\\b"), "") + ("+" === t.charAt(0) ? " " + t.substr(2) : ""), i._tween._duration && (e.className = s.e, l = b(e, o, v(e), a, u), e.className = f, s.data = l.firstMPT, e.style.cssText = p, s = s.xfirst = i.parse(e, l.difs, s, r)), s
				}
			}), xe("clearProps", {
				parser: function(e, t, n, i, s) {
					return (s = new ge(e, n, 0, 0, s, 2))
						.setRatio = Pe, s.e = t, s.pr = -10, s.data = i._tween, m = !0, s
				}
			}), e = "bezier,throwProps,physicsProps,physics2D".split(","), ye = e.length; ye--;) be(e[ye]);
			(e = J.prototype)
			._firstPT = null, e._onInitTween = function(e, t, n) {
				if (!e.nodeType) return !1;
				this._target = e, this._tween = n, this._vars = t, L = t.autoRound, m = !1, k = t.suffixMap || J.suffixMap, I = re(e, ""), p = this._overwriteProps;
				var i, s, r, a, l, o, d, u, c, f = e.style;
				if (B && "" === f.zIndex && ("auto" !== (i = ae(e, "zIndex", I)) && "" !== i || (f.zIndex = 0)), "string" == typeof t && (a = f.cssText, i = v(e, I), f.cssText = a + ";" + t, i = b(e, i, v(e))
					.difs, !ne && R.test(t) && (i.opacity = parseFloat(RegExp.$1)), t = i, f.cssText = a), this._firstPT = s = this.parse(e, t, null), this._transformType) {
					for (c = 3 === this._transformType, Ee ? M && (B = !0, "" === f.zIndex && ("auto" !== (d = ae(e, "zIndex", I)) && "" !== d || (f.zIndex = 0)), C && (f.WebkitBackfaceVisibility = this._vars.WebkitBackfaceVisibility || (c ? "visible" : "hidden"))) : f.zoom = 1, r = s; r && r._next;) r = r._next;
					u = new ge(e, "transform", 0, 0, null, 2), this._linkCSSP(u, null, r), u.setRatio = c && Le ? we : Ee ? Te : _e, u.data = this._transform || ke(e, I, !0), p.pop()
				}
				if (m) {
					for (; s;) {
						for (o = s._next, r = a; r && r.pr > s.pr;) r = r._next;
						(s._prev = r ? r._prev : l) ? s._prev._next = s: a = s, (s._next = r) ? r._prev = s : l = s, s = o
					}
					this._firstPT = a
				}
				return !0
			}, e.parse = function(e, t, n, i) {
				var s, r, a, l, o, d, u, c, f, p, m = e.style;
				for (s in t) d = t[s], (r = g[s]) ? n = r.parse(e, d, s, this, n, i, t) : (o = ae(e, s, I) + "", f = "string" == typeof d, "color" === s || "fill" === s || "stroke" === s || -1 !== s.indexOf("Color") || f && q.test(d) ? (f || (d = (3 < (d = N(d))
					.length ? "rgba(" : "rgb(") + d.join(",") + ")"), n = he(m, s, o, d, !0, "transparent", n, 0, i)) : !f || -1 === d.indexOf(" ") && -1 === d.indexOf(",") ? (u = (a = parseFloat(o)) || 0 === a ? o.substr((a + "")
						.length) : "", "" !== o && "auto" !== o || (u = "width" === s || "height" === s ? (a = x(e, s, I), "px") : "left" === s || "top" === s ? (a = y(e, s, I), "px") : (a = "opacity" !== s ? 0 : 1, "")), "" === (c = (p = f && "=" === d.charAt(1)) ? (l = parseInt(d.charAt(0) + "1", 10), d = d.substr(2), l *= parseFloat(d), d.replace(j, "")) : (l = parseFloat(d), f && d.substr((l + "")
						.length) || "")) && (c = k[s] || u), d = l || 0 === l ? (p ? l + a : l) + c : t[s], u !== c && "" !== c && (!l && 0 !== l || !a && 0 !== a || (a = le(e, s, a, u), "%" === c ? (100 < (a /= le(e, s, 100, "%") / 100) && (a = 100), !0 !== t.strictUnits && (o = a + "%")) : "em" === c ? a /= le(e, s, 1, "em") : (l = le(e, s, l, c), c = "px"), p && (!l && 0 !== l || (d = l + a + c)))), p && (l += a), !a && 0 !== a || !l && 0 !== l ? void 0 !== m[s] && (d || d + "" != "NaN" && null != d) ? (n = new ge(m, s, l || a || 0, 0, n, -1, s, !1, 0, o, d))
					.xs0 = "none" !== d || "display" !== s && -1 === s.indexOf("Style") ? d : o : h("invalid " + s + " tween value: " + t[s]) : (n = new ge(m, s, a, l - a, n, 0, s, !1 !== L && ("px" === c || "zIndex" === s), 0, o, d))
					.xs0 = c) : n = he(m, s, o, d, !0, null, n, 0, i)), i && n && !n.plugin && (n.plugin = i);
				return n
			}, e.setRatio = function(e) {
				var t, n, i, s = this._firstPT;
				if (1 !== e || this._tween._time !== this._tween._duration && 0 !== this._tween._time)
					if (e || this._tween._time !== this._tween._duration && 0 !== this._tween._time || -1e-6 === this._tween._rawPrevTime)
						for (; s;) {
							if (t = s.c * e + s.s, s.r ? t = 0 < t ? t + .5 | 0 : t - .5 | 0 : t < 1e-6 && -1e-6 < t && (t = 0), s.type)
								if (1 === s.type)
									if (2 === (i = s.l)) s.t[s.p] = s.xs0 + t + s.xs1 + s.xn1 + s.xs2;
									else if (3 === i) s.t[s.p] = s.xs0 + t + s.xs1 + s.xn1 + s.xs2 + s.xn2 + s.xs3;
							else if (4 === i) s.t[s.p] = s.xs0 + t + s.xs1 + s.xn1 + s.xs2 + s.xn2 + s.xs3 + s.xn3 + s.xs4;
							else if (5 === i) s.t[s.p] = s.xs0 + t + s.xs1 + s.xn1 + s.xs2 + s.xn2 + s.xs3 + s.xn3 + s.xs4 + s.xn4 + s.xs5;
							else {
								for (n = s.xs0 + t + s.xs1, i = 1; i < s.l; i++) n += s["xn" + i] + s["xs" + (i + 1)];
								s.t[s.p] = n
							} else -1 === s.type ? s.t[s.p] = s.xs0 : s.setRatio && s.setRatio(e);
							else s.t[s.p] = t + s.xs0;
							s = s._next
						} else
							for (; s;) 2 !== s.type ? s.t[s.p] = s.b : s.setRatio(e), s = s._next;
					else
						for (; s;) 2 !== s.type ? s.t[s.p] = s.e : s.setRatio(e), s = s._next
			}, e._enableTransforms = function(e) {
				this._transformType = e || 3 === this._transformType ? 3 : 2, this._transform = this._transform || ke(this._target, I, !0)
			}, e._linkCSSP = function(e, t, n, i) {
				return e && (t && (t._prev = e), e._next && (e._next._prev = e._prev), e._prev ? e._prev._next = e._next : this._firstPT === e && (this._firstPT = e._next, i = !0), n ? n._next = e : i || null !== this._firstPT || (this._firstPT = e), e._next = t, e._prev = n), e
			}, e._kill = function(e) {
				var t, n, i, s = e;
				if (e.autoAlpha || e.alpha) {
					for (n in s = {}, e) s[n] = e[n];
					s.opacity = 1, s.autoAlpha && (s.visibility = 1)
				}
				return e.className && (t = this._classNamePT) && ((i = t.xfirst) && i._prev ? this._linkCSSP(i._prev, t._next, i._prev._prev) : i === this._firstPT && (this._firstPT = t._next), t._next && this._linkCSSP(t._next, t._next._next, i._prev), this._classNamePT = null), r.prototype._kill.call(this, s)
			};
			var Ae = function(e, t, n) {
				var i, s, r, a;
				if (e.slice)
					for (s = e.length; - 1 < --s;) Ae(e[s], t, n);
				else
					for (s = (i = e.childNodes)
						.length; - 1 < --s;) a = (r = i[s])
						.type, r.style && (t.push(v(r)), n && n.push(r)), 1 !== a && 9 !== a && 11 !== a || !r.childNodes.length || Ae(r, t, n)
			};
			return J.cascadeTo = function(e, t, n) {
				var i, s, r, a = f.to(e, t, n),
					l = [a],
					o = [],
					d = [],
					u = [],
					c = f._internals.reservedProps;
				for (e = a._targets || a.target, Ae(e, o, u), a.render(t, !0), Ae(e, d), a.render(0, !0), a._enabled(!0), i = u.length; - 1 < --i;)
					if ((s = b(u[i], o[i], d[i]))
						.firstMPT) {
						for (r in s = s.difs, n) c[r] && (s[r] = n[r]);
						l.push(f.to(u[i], t, s))
					} return l
			}, r.activate([J]), J
		}, !0)
	}), window._gsDefine && window._gsQueue.pop()(),
	function(f) {
		"use strict";

		function p(e) {
			var t, n = e.split("."),
				i = f;
			for (t = 0; t < n.length; t++) i[n[t]] = i = i[n[t]] || {};
			return i
		}
		var e, t, n, i, s, r = p("com.greensock"),
			m = {},
			g = function(l, e, o, d) {
				this.sc = m[l] ? m[l].sc : [], (m[l] = this)
					.gsClass = null, this.def = o;
				var u = e || [],
					c = [];
				this.check = function(e) {
					for (var t, n = u.length, i = 0; - 1 < --n;)(t = m[u[n]] || new g(u[n]))
						.gsClass ? c[n] = t.gsClass : (i++, e && t.sc.push(this));
					if (0 === i && o) {
						var s = ("com.greensock." + l)
							.split("."),
							r = s.pop(),
							a = p(s.join("."))[r] = this.gsClass = o.apply(o, c);
						for (d && ((f.GreenSockGlobals || f)[r] = a, "function" == typeof define && define.amd ? define((f.GreenSockAMDPath ? f.GreenSockAMDPath + "/" : "") + l.split(".")
							.join("/"), [],
							function() {
								return a
							}) : "undefined" != typeof module && module.exports && (module.exports = a)), n = 0; n < this.sc.length; n++) this.sc[n].check(!1)
					}
				}, this.check(!0)
			},
			a = r._class = function(e, t, n) {
				return new g(e, [], function() {
					return t
				}, n), t
			};
		f._gsDefine = function(e, t, n, i) {
			return new g(e, t, n, i)
		};
		var l = [0, 0, 1, 1],
			u = [],
			o = a("easing.Ease", function(e, t, n, i) {
				this._func = e, this._type = n || 0, this._power = i || 0, this._params = t ? l.concat(t) : l
			}, !0);
		for ((s = o.prototype)
			._calcEnd = !1, s.getRatio = function(e) {
				if (this._func) return this._params[0] = e, this._func.apply(null, this._params);
				var t = this._type,
					n = this._power,
					i = 1 === t ? 1 - e : 2 === t ? e : e < .5 ? 2 * e : 2 * (1 - e);
				return 1 === n ? i *= i : 2 === n ? i *= i * i : 3 === n ? i *= i * i * i : 4 === n && (i *= i * i * i * i), 1 === t ? 1 - i : 2 === t ? i : e < .5 ? i / 2 : 1 - i / 2
			}, t = (e = ["Linear", "Quad", "Cubic", "Quart", "Quint"])
			.length; - 1 < --t;) n = a("easing." + e[t], function() {}, !0), i = a("easing.Power" + t, function() {}, !0), n.easeOut = i.easeOut = new o(null, null, 1, t), n.easeIn = i.easeIn = new o(null, null, 2, t), n.easeInOut = i.easeInOut = new o(null, null, 3, t);
		a("easing.Strong", r.easing.Power4, !0), r.easing.Linear.easeNone = r.easing.Linear.easeIn, (s = a("events.EventDispatcher", function(e) {
					this._listeners = {}, this._eventTarget = e || this
				})
				.prototype)
			.addEventListener = function(e, t, n, i, s) {
				s = s || 0;
				var r, a, l = this._listeners[e],
					o = 0;
				for (null == l && (this._listeners[e] = l = []), a = l.length; - 1 < --a;)(r = l[a])
					.c === t ? l.splice(a, 1) : 0 === o && r.pr < s && (o = a + 1);
				l.splice(o, 0, {
					c: t,
					s: n,
					up: i,
					pr: s
				})
			}, s.removeEventListener = function(e, t) {
				var n = this._listeners[e];
				if (n)
					for (var i = n.length; - 1 < --i;)
						if (n[i].c === t) return void n.splice(i, 1)
			}, s.dispatchEvent = function(e) {
				var t = this._listeners[e];
				if (t)
					for (var n, i = t.length, s = this._eventTarget; - 1 < --i;)(n = t[i])
						.up ? n.c.call(n.s || s, {
							type: e,
							target: s
						}) : n.c.call(n.s || s)
			};
		var c = f.requestAnimationFrame,
			h = f.cancelAnimationFrame,
			y = Date.now || function() {
				return (new Date)
					.getTime()
			};
		for (t = (e = ["ms", "moz", "webkit", "o"])
			.length; - 1 < --t && !c;) c = f[e[t] + "RequestAnimationFrame"], h = f[e[t] + "CancelAnimationFrame"] || f[e[t] + "CancelRequestAnimationFrame"];
		h = h || function(e) {
				f.clearTimeout(e)
			}, a("Ticker", function(e, t) {
				this.time = 0, this.frame = 0;
				var n, i, s, r, a, l = this,
					o = y(),
					d = !1 !== t;
				this.tick = function() {
					l.time = (y() - o) / 1e3, (!n || l.time >= a) && (l.frame++, (a = l.time + r - (l.time - a) - 5e-4) <= l.time && (a = l.time + .001), l.dispatchEvent("tick")), s = i(l.tick)
				}, this.fps = function(e) {
					if (!arguments.length) return n;
					r = 1 / ((n = e) || 60), a = this.time + r, i = 0 === n ? function(e) {} : d && c ? c : function(e) {
						return f.setTimeout(e, 1e3 * (a - l.time) + 1 >> 0 || 1)
					}, h(s), s = i(l.tick)
				}, this.useRAF = function(e) {
					if (!arguments.length) return d;
					d = e, this.fps(n)
				}, this.fps(e)
			}), (s = r.Ticker.prototype = new r.events.EventDispatcher)
			.constructor = r.Ticker;
		var d = a("core.Animation", function(e, t) {
				if (this.vars = t || {}, this._duration = this._totalDuration = e || 0, this._delay = Number(this.vars.delay) || 0, this._timeScale = 1, this._active = 1 == this.vars.immediateRender, this.data = this.vars.data, this._reversed = 1 == this.vars.reversed, S) {
					var n = this.vars.useFrames ? E : S;
					n.insert(this, n._time), this.vars.paused && this.paused(!0)
				}
			}),
			v = d.ticker = new r.Ticker;
		(s = d.prototype)
		._dirty = s._gc = s._initted = s._paused = !1, s._totalTime = s._time = 0, s._rawPrevTime = -1, s._next = s._last = s._onUpdate = s._timeline = s.timeline = null, s._paused = !1, s.play = function(e, t) {
			return arguments.length && this.seek(e, t), this.reversed(!1), this.paused(!1)
		}, s.pause = function(e, t) {
			return arguments.length && this.seek(e, t), this.paused(!0)
		}, s.resume = function(e, t) {
			return arguments.length && this.seek(e, t), this.paused(!1)
		}, s.seek = function(e, t) {
			return this.totalTime(Number(e), 0 != t)
		}, s.restart = function(e, t) {
			return this.reversed(!1), this.paused(!1), this.totalTime(e ? -this._delay : 0, 0 != t)
		}, s.reverse = function(e, t) {
			return arguments.length && this.seek(e || this.totalDuration(), t), this.reversed(!0), this.paused(!1)
		}, s.render = function() {}, s.invalidate = function() {
			return this
		}, s._enabled = function(e, t) {
			return this._gc = !e, this._active = e && !this._paused && 0 < this._totalTime && this._totalTime < this._totalDuration, 1 != t && (e && null == this.timeline ? this._timeline.insert(this, this._startTime - this._delay) : e || null == this.timeline || this._timeline._remove(this, !0)), !1
		}, s._kill = function(e, t) {
			return this._enabled(!1, !1)
		}, s.kill = function(e, t) {
			return this._kill(e, t), this
		}, s._uncache = function(e) {
			for (var t = e ? this : this.timeline; t;) t._dirty = !0, t = t.timeline;
			return this
		}, s.eventCallback = function(e, t, n, i) {
			if (null == e) return null;
			if ("on" === e.substr(0, 2)) {
				if (1 === arguments.length) return this.vars[e];
				if (null == t) delete this.vars[e];
				else if (this.vars[e] = t, this.vars[e + "Params"] = n, this.vars[e + "Scope"] = i, n)
					for (var s = n.length; - 1 < --s;) "{self}" === n[s] && ((n = this.vars[e + "Params"] = n.concat())[s] = this);
				"onUpdate" === e && (this._onUpdate = t)
			}
			return this
		}, s.delay = function(e) {
			return arguments.length ? (this._timeline.smoothChildTiming && this.startTime(this._startTime + e - this._delay), this._delay = e, this) : this._delay
		}, s.duration = function(e) {
			return arguments.length ? (this._duration = this._totalDuration = e, this._uncache(!0), this._timeline.smoothChildTiming && this._active && 0 != e && this.totalTime(this._totalTime * (e / this._duration), !0), this) : (this._dirty = !1, this._duration)
		}, s.totalDuration = function(e) {
			return this._dirty = !1, arguments.length ? this.duration(e) : this._totalDuration
		}, s.time = function(e, t) {
			return arguments.length ? (this._dirty && this.totalDuration(), e > this._duration && (e = this._duration), this.totalTime(e, t)) : this._time
		}, s.totalTime = function(e, t) {
			if (!arguments.length) return this._totalTime;
			if (this._timeline) {
				if (e < 0 && (e += this.totalDuration()), this._timeline.smoothChildTiming && (this._dirty && this.totalDuration(), e > this._totalDuration && (e = this._totalDuration), this._startTime = (this._paused ? this._pauseTime : this._timeline._time) - (this._reversed ? this._totalDuration - e : e) / this._timeScale, this._timeline._dirty || this._uncache(!1), !this._timeline._active))
					for (var n = this._timeline; n._timeline;) n.totalTime(n._totalTime, !0), n = n._timeline;
				this._gc && this._enabled(!0, !1), this._totalTime != e && this.render(e, t, !1)
			}
			return this
		}, s.startTime = function(e) {
			return arguments.length ? (e != this._startTime && (this._startTime = e, this.timeline && this.timeline._sortChildren && this.timeline.insert(this, e - this._delay)), this) : this._startTime
		}, s.timeScale = function(e) {
			if (!arguments.length) return this._timeScale;
			if (e = e || 1e-6, this._timeline && this._timeline.smoothChildTiming) {
				var t = this._pauseTime || 0 == this._pauseTime ? this._pauseTime : this._timeline._totalTime;
				this._startTime = t - (t - this._startTime) * this._timeScale / e
			}
			return this._timeScale = e, this._uncache(!1)
		}, s.reversed = function(e) {
			return arguments.length ? (e != this._reversed && (this._reversed = e, this.totalTime(this._totalTime, !0)), this) : this._reversed
		}, s.paused = function(e) {
			return arguments.length ? (e != this._paused && this._timeline && (!e && this._timeline.smoothChildTiming && (this._startTime += this._timeline.rawTime() - this._pauseTime, this._uncache(!1)), this._pauseTime = e ? this._timeline.rawTime() : null, this._paused = e, this._active = !this._paused && 0 < this._totalTime && this._totalTime < this._totalDuration), this._gc && (e || this._enabled(!0, !1)), this) : this._paused
		};
		var b = a("core.SimpleTimeline", function(e) {
			d.call(this, 0, e), this.autoRemoveChildren = this.smoothChildTiming = !0
		});
		(s = b.prototype = new d)
		.constructor = b, s.kill()
			._gc = !1, s._first = s._last = null, s._sortChildren = !1, s.insert = function(e, t) {
				e._startTime = Number(t || 0) + e._delay, e._paused && this !== e._timeline && (e._pauseTime = e._startTime + (this.rawTime() - e._startTime) / e._timeScale), e.timeline && e.timeline._remove(e, !0), e.timeline = e._timeline = this, e._gc && e._enabled(!0, !0);
				var n = this._last;
				if (this._sortChildren)
					for (var i = e._startTime; n && n._startTime > i;) n = n._prev;
				return n ? (e._next = n._next, n._next = e) : (e._next = this._first, this._first = e), e._next ? e._next._prev = e : this._last = e, e._prev = n, this._timeline && this._uncache(!0), this
			}, s._remove = function(e, t) {
				return e.timeline === this && (t || e._enabled(!1, !0), e.timeline = null, e._prev ? e._prev._next = e._next : this._first === e && (this._first = e._next), e._next ? e._next._prev = e._prev : this._last === e && (this._last = e._prev), this._timeline && this._uncache(!0)), this
			}, s.render = function(e, t, n) {
				var i, s = this._first;
				for (this._totalTime = this._time = this._rawPrevTime = e; s;) i = s._next, (s._active || e >= s._startTime && !s._paused) && (s._reversed ? s.render((s._dirty ? s.totalDuration() : s._totalDuration) - (e - s._startTime) * s._timeScale, t, !1) : s.render((e - s._startTime) * s._timeScale, t, !1)), s = i
			}, s.rawTime = function() {
				return this._totalTime
			};
		var x = a("TweenLite", function(e, t, n) {
			if (d.call(this, t, n), null == e) throw "Cannot tween an undefined reference.";
			var i, s;
			if (this.target = e, this._overwrite = null == this.vars.overwrite ? I[x.defaultOverwrite] : "number" == typeof this.vars.overwrite ? this.vars.overwrite >> 0 : I[this.vars.overwrite], (e instanceof Array || e.jquery) && "object" == typeof e[0])
				for (this._targets = e.slice(0), this._propLookup = [], this._siblings = [], i = 0; i < this._targets.length; i++)(s = this._targets[i])
					.jquery ? (this._targets.splice(i--, 1), this._targets = this._targets.concat(s.constructor.makeArray(s))) : (this._siblings[i] = N(s, this, !1), 1 === this._overwrite && 1 < this._siblings[i].length && L(s, this, null, 1, this._siblings[i]));
			else this._propLookup = {}, this._siblings = N(e, this, !1), 1 === this._overwrite && 1 < this._siblings.length && L(e, this, null, 1, this._siblings);
			(this.vars.immediateRender || 0 === t && 0 === this._delay && 0 != this.vars.immediateRender) && this.render(-this._delay, !1, !0)
		}, !0);
		(s = x.prototype = new d)
		.constructor = x, s.kill()
			._gc = !1, s.ratio = 0, s._firstPT = s._targets = s._overwrittenProps = null, s._notifyPluginsOfEnabled = !1, x.version = 12, x.defaultEase = s._ease = new o(null, null, 1, 1), x.defaultOverwrite = "auto", x.ticker = v;
		var _ = x._plugins = {},
			w = {},
			T = 0,
			k = {
				ease: 1,
				delay: 1,
				overwrite: 1,
				onComplete: 1,
				onCompleteParams: 1,
				onCompleteScope: 1,
				useFrames: 1,
				runBackwards: 1,
				startAt: 1,
				onUpdate: 1,
				onUpdateParams: 1,
				onUpdateScope: 1,
				onStart: 1,
				onStartParams: 1,
				onStartScope: 1,
				onReverseComplete: 1,
				onReverseCompleteParams: 1,
				onReverseCompleteScope: 1,
				onRepeat: 1,
				onRepeatParams: 1,
				onRepeatScope: 1,
				easeParams: 1,
				yoyo: 1,
				orientToBezier: 1,
				immediateRender: 1,
				repeat: 1,
				repeatDelay: 1,
				data: 1,
				paused: 1,
				reversed: 1
			},
			I = {
				none: 0,
				all: 1,
				auto: 2,
				concurrent: 3,
				allOnStart: 4,
				preexisting: 5,
				true: 1,
				false: 0
			},
			E = d._rootFramesTimeline = new b,
			S = d._rootTimeline = new b;
		S._startTime = v.time, E._startTime = v.frame, S._active = E._active = !0, d._updateRoot = function() {
			var e, t, n;
			if (S.render((v.time - S._startTime) * S._timeScale, !1, !1), E.render((v.frame - E._startTime) * E._timeScale, !1, !1), !(v.frame % 120))
				for (n in w) {
					for (e = (t = w[n].tweens)
						.length; - 1 < --e;) t[e]._gc && t.splice(e, 1);
					0 === t.length && delete w[n]
				}
		}, v.addEventListener("tick", d._updateRoot);
		var N = function(e, t, n) {
				var i, s, r = e._gsTweenID;
				if (w[r || (e._gsTweenID = r = "t" + T++)] || (w[r] = {
					target: e,
					tweens: []
				}), t && ((i = w[r].tweens)[s = i.length] = t, n))
					for (; - 1 < --s;) i[s] === t && i.splice(s, 1);
				return w[r].tweens
			},
			L = function(e, t, n, i, s) {
				var r, a, l;
				if (1 === i || 4 <= i) {
					var o = s.length;
					for (r = 0; r < o; r++)
						if ((l = s[r]) !== t) l._gc || l._enabled(!1, !1) && (a = !0);
						else if (5 === i) break;
					return a
				}
				var d, u = t._startTime + 1e-10,
					c = [],
					f = 0;
				for (r = s.length; - 1 < --r;)(l = s[r]) === t || l._gc || l._paused || (l._timeline !== t._timeline ? (d = d || B(t, 0), 0 === B(l, d) && (c[f++] = l)) : l._startTime <= u && l._startTime + l.totalDuration() / l._timeScale + 1e-10 > u && ((0 === t._duration || !l._initted) && u - l._startTime <= 2e-10 || (c[f++] = l)));
				for (r = f; - 1 < --r;) l = c[r], 2 === i && l._kill(n, e) && (a = !0), (2 !== i || !l._firstPT && l._initted) && l._enabled(!1, !1) && (a = !0);
				return a
			},
			B = function(e, t) {
				for (var n = e._timeline, i = n._timeScale, s = e._startTime; n._timeline;) {
					if (s += n._startTime, i *= n._timeScale, n._paused) return -100;
					n = n._timeline
				}
				return t < (s /= i) ? s - t : !e._initted && s - t < 2e-10 ? 1e-10 : (s += e.totalDuration() / e._timeScale / i) > t ? 0 : s - t - 1e-10
			};
		s._init = function() {
			var e, t, n;
			if (this.vars.startAt && (this.vars.startAt.overwrite = 0, this.vars.startAt.immediateRender = !0, x.to(this.target, 0, this.vars.startAt)), this.vars.ease instanceof o ? this._ease = this.vars.easeParams instanceof Array ? this.vars.ease.config.apply(this.vars.ease, this.vars.easeParams) : this.vars.ease : "function" == typeof this.vars.ease ? this._ease = new o(this.vars.ease, this.vars.easeParams) : this._ease = x.defaultEase, this._easeType = this._ease._type, this._easePower = this._ease._power, this._firstPT = null, this._targets)
				for (e = this._targets.length; - 1 < --e;) this._initProps(this._targets[e], this._propLookup[e] = {}, this._siblings[e], this._overwrittenProps ? this._overwrittenProps[e] : null) && (t = !0);
			else t = this._initProps(this.target, this._propLookup, this._siblings, this._overwrittenProps);
			if (t && x._onPluginEvent("_onInitAllProps", this), this._overwrittenProps && null == this._firstPT && "function" != typeof this.target && this._enabled(!1, !1), this.vars.runBackwards)
				for (n = this._firstPT; n;) n.s += n.c, n.c = -n.c, n = n._next;
			this._onUpdate = this.vars.onUpdate, this._initted = !0
		}, s._initProps = function(e, t, n, i) {
			var s, r, a, l, o, d;
			if (null == e) return !1;
			for (s in this.vars) {
				if (k[s]) {
					if (("onStartParams" === s || "onUpdateParams" === s || "onCompleteParams" === s || "onReverseCompleteParams" === s || "onRepeatParams" === s) && (o = this.vars[s]))
						for (r = o.length; - 1 < --r;) "{self}" === o[r] && ((o = this.vars[s] = o.concat())[r] = this)
				} else if (_[s] && (l = new _[s])
					._onInitTween(e, this.vars[s], this)) {
					for (this._firstPT = d = {
						_next: this._firstPT,
						t: l,
						p: "setRatio",
						s: 0,
						c: 1,
						f: !0,
						n: s,
						pg: !0,
						pr: l._priority
					}, r = l._overwriteProps.length; - 1 < --r;) t[l._overwriteProps[r]] = this._firstPT;
					(l._priority || l._onInitAllProps) && (a = !0), (l._onDisable || l._onEnable) && (this._notifyPluginsOfEnabled = !0)
				} else this._firstPT = t[s] = d = {
					_next: this._firstPT,
					t: e,
					p: s,
					f: "function" == typeof e[s],
					n: s,
					pg: !1,
					pr: 0
				}, d.s = d.f ? e[s.indexOf("set") || "function" != typeof e["get" + s.substr(3)] ? s : "get" + s.substr(3)]() : parseFloat(e[s]), d.c = "number" == typeof this.vars[s] ? this.vars[s] - d.s : "string" == typeof this.vars[s] ? parseFloat(this.vars[s].split("=")
					.join("")) : 0;
				d && d._next && (d._next._prev = d)
			}
			return i && this._kill(i, e) ? this._initProps(e, t, n, i) : 1 < this._overwrite && this._firstPT && 1 < n.length && L(e, this, t, this._overwrite, n) ? (this._kill(t, e), this._initProps(e, t, n, i)) : a
		}, s.render = function(e, t, n) {
			var i, s, r, a = this._time;
			if (e >= this._duration) this._totalTime = this._time = this._duration, this.ratio = this._ease._calcEnd ? this._ease.getRatio(1) : 1, this._reversed || (i = !0, s = "onComplete"), 0 === this._duration && ((0 === e || this._rawPrevTime < 0) && this._rawPrevTime !== e && (n = !0), this._rawPrevTime = e);
			else if (e <= 0) this._totalTime = this._time = 0, this.ratio = this._ease._calcEnd ? this._ease.getRatio(0) : 0, (0 !== a || 0 === this._duration && 0 < this._rawPrevTime) && (s = "onReverseComplete", i = this._reversed), e < 0 ? (this._active = !1, 0 === this._duration && (0 <= this._rawPrevTime && (n = !0), this._rawPrevTime = e)) : this._initted || (n = !0);
			else if (this._totalTime = this._time = e, this._easeType) {
				var l = e / this._duration,
					o = this._easeType,
					d = this._easePower;
				(1 === o || 3 === o && .5 <= l) && (l = 1 - l), 3 === o && (l *= 2), 1 === d ? l *= l : 2 === d ? l *= l * l : 3 === d ? l *= l * l * l : 4 === d && (l *= l * l * l * l), 1 === o ? this.ratio = 1 - l : 2 === o ? this.ratio = l : e / this._duration < .5 ? this.ratio = l / 2 : this.ratio = 1 - l / 2
			} else this.ratio = this._ease.getRatio(e / this._duration);
			if (this._time !== a || n) {
				for (this._initted || (this._init(), !i && this._time && (this.ratio = this._ease.getRatio(this._time / this._duration))), this._active || this._paused || (this._active = !0), 0 === a && this.vars.onStart && (0 === this._time && 0 !== this._duration || t || this.vars.onStart.apply(this.vars.onStartScope || this, this.vars.onStartParams || u)), r = this._firstPT; r;) r.f ? r.t[r.p](r.c * this.ratio + r.s) : r.t[r.p] = r.c * this.ratio + r.s, r = r._next;
				this._onUpdate && (t || this._onUpdate.apply(this.vars.onUpdateScope || this, this.vars.onUpdateParams || u)), s && (this._gc || (i && (this._timeline.autoRemoveChildren && this._enabled(!1, !1), this._active = !1), t || this.vars[s] && this.vars[s].apply(this.vars[s + "Scope"] || this, this.vars[s + "Params"] || u)))
			}
		}, s._kill = function(e, t) {
			if ("all" === e && (e = null), null == e && (null == t || t == this.target)) return this._enabled(!1, !1);
			var n, i, s, r, a, l, o, d;
			if (((t = t || this._targets || this.target) instanceof Array || t.jquery) && "object" == typeof t[0])
				for (n = t.length; - 1 < --n;) this._kill(e, t[n]) && (l = !0);
			else {
				if (this._targets) {
					for (n = this._targets.length; - 1 < --n;)
						if (t === this._targets[n]) {
							a = this._propLookup[n] || {}, this._overwrittenProps = this._overwrittenProps || [], i = this._overwrittenProps[n] = e ? this._overwrittenProps[n] || {} : "all";
							break
						}
				} else {
					if (t !== this.target) return !1;
					a = this._propLookup, i = this._overwrittenProps = e ? this._overwrittenProps || {} : "all"
				}
				if (a)
					for (s in o = e || a, d = e != i && "all" != i && e != a && (null == e || 1 != e._tempKill), o)(r = a[s]) && (r.pg && r.t._kill(o) && (l = !0), r.pg && 0 !== r.t._overwriteProps.length || (r._prev ? r._prev._next = r._next : r === this._firstPT && (this._firstPT = r._next), r._next && (r._next._prev = r._prev), r._next = r._prev = null), delete a[s]), d && (i[s] = 1)
			}
			return l
		}, s.invalidate = function() {
			return this._notifyPluginsOfEnabled && x._onPluginEvent("_onDisable", this), this._firstPT = null, this._overwrittenProps = null, this._onUpdate = null, this._initted = this._active = this._notifyPluginsOfEnabled = !1, this._propLookup = this._targets ? {} : [], this
		}, s._enabled = function(e, t) {
			if (e && this._gc)
				if (this._targets)
					for (var n = this._targets.length; - 1 < --n;) this._siblings[n] = N(this._targets[n], this, !0);
				else this._siblings = N(this.target, this, !0);
			return d.prototype._enabled.call(this, e, t), !(!this._notifyPluginsOfEnabled || !this._firstPT) && x._onPluginEvent(e ? "_onEnable" : "_onDisable", this)
		}, x.to = function(e, t, n) {
			return new x(e, t, n)
		}, x.from = function(e, t, n) {
			return n.runBackwards = !0, 0 != n.immediateRender && (n.immediateRender = !0), new x(e, t, n)
		}, x.fromTo = function(e, t, n, i) {
			return (i.startAt = n)
				.immediateRender && (i.immediateRender = !0), new x(e, t, i)
		}, x.delayedCall = function(e, t, n, i, s) {
			return new x(t, 0, {
				delay: e,
				onComplete: t,
				onCompleteParams: n,
				onCompleteScope: i,
				onReverseComplete: t,
				onReverseCompleteParams: n,
				onReverseCompleteScope: i,
				immediateRender: !1,
				useFrames: s,
				overwrite: 0
			})
		}, x.set = function(e, t) {
			return new x(e, 0, t)
		}, x.killTweensOf = x.killDelayedCallsTo = function(e, t) {
			for (var n = x.getTweensOf(e), i = n.length; - 1 < --i;) n[i]._kill(t, e)
		}, x.getTweensOf = function(e) {
			if (null != e) {
				var t, n, i, s;
				if ((e instanceof Array || e.jquery) && "object" == typeof e[0]) {
					for (t = e.length, n = []; - 1 < --t;) n = n.concat(x.getTweensOf(e[t]));
					for (t = n.length; - 1 < --t;)
						for (s = n[t], i = t; - 1 < --i;) s === n[i] && n.splice(t, 1)
				} else
					for (t = (n = N(e)
							.concat())
						.length; - 1 < --t;) n[t]._gc && n.splice(t, 1);
				return n
			}
		};
		var M = a("plugins.TweenPlugin", function(e, t) {
			this._overwriteProps = (e || "")
				.split(","), this._propName = this._overwriteProps[0], this._priority = t || 0
		}, !0);
		if (s = M.prototype, M.version = 12, M.API = 2, s._firstPT = null, s._addTween = function(e, t, n, i, s, r) {
			var a;
			null != i && (a = "number" == typeof i || "=" !== i.charAt(1) ? Number(i) - n : Number(i.split("=")
				.join(""))) && (this._firstPT = {
				_next: this._firstPT,
				t: e,
				p: t,
				s: n,
				c: a,
				f: "function" == typeof e[t],
				n: s || t,
				r: r
			}, this._firstPT._next && (this._firstPT._next._prev = this._firstPT))
		}, s.setRatio = function(e) {
			for (var t, n = this._firstPT; n;) t = n.c * e + n.s, n.r && (t = t + (0 < t ? .5 : -.5) >> 0), n.f ? n.t[n.p](t) : n.t[n.p] = t, n = n._next
		}, s._kill = function(e) {
			if (null != e[this._propName]) this._overwriteProps = [];
			else
				for (var t = this._overwriteProps.length; - 1 < --t;) null != e[this._overwriteProps[t]] && this._overwriteProps.splice(t, 1);
			for (var n = this._firstPT; n;) null != e[n.n] && (n._next && (n._next._prev = n._prev), n._prev ? (n._prev._next = n._next, n._prev = null) : this._firstPT === n && (this._firstPT = n._next)), n = n._next;
			return !1
		}, s._roundProps = function(e, t) {
			for (var n = this._firstPT; n;)(e[this._propName] || null != n.n && e[n.n.split(this._propName + "_")
				.join("")]) && (n.r = t), n = n._next
		}, x._onPluginEvent = function(e, t) {
			var n, i = t._firstPT;
			if ("_onInitAllProps" === e) {
				for (var s, r, a, l; i;) {
					for (l = i._next, s = r; s && s.pr > i.pr;) s = s._next;
					(i._prev = s ? s._prev : a) ? i._prev._next = i: r = i, (i._next = s) ? s._prev = i : a = i, i = l
				}
				i = t._firstPT = r
			}
			for (; i;) i.pg && "function" == typeof i.t[e] && i.t[e]() && (n = !0), i = i._next;
			return n
		}, M.activate = function(e) {
			for (var t = e.length; - 1 < --t;) e[t].API === M.API && (x._plugins[(new e[t])
				._propName] = e[t]);
			return !0
		}, e = f._gsQueue) {
			for (t = 0; t < e.length; t++) e[t]();
			for (s in m) m[s].def || console.log("Warning: TweenLite encountered missing dependency: com.greensock." + s)
		}
	}(window), jQuery.easing.jswing = jQuery.easing.swing, jQuery.extend(jQuery.easing, {
		def: "easeOutQuad",
		swing: function(e, t, n, i, s) {
			return jQuery.easing[jQuery.easing.def](e, t, n, i, s)
		},
		easeInQuad: function(e, t, n, i, s) {
			return i * (t /= s) * t + n
		},
		easeOutQuad: function(e, t, n, i, s) {
			return -i * (t /= s) * (t - 2) + n
		},
		easeInOutQuad: function(e, t, n, i, s) {
			return (t /= s / 2) < 1 ? i / 2 * t * t + n : -i / 2 * (--t * (t - 2) - 1) + n
		},
		easeInCubic: function(e, t, n, i, s) {
			return i * (t /= s) * t * t + n
		},
		easeOutCubic: function(e, t, n, i, s) {
			return i * ((t = t / s - 1) * t * t + 1) + n
		},
		easeInOutCubic: function(e, t, n, i, s) {
			return (t /= s / 2) < 1 ? i / 2 * t * t * t + n : i / 2 * ((t -= 2) * t * t + 2) + n
		},
		easeInQuart: function(e, t, n, i, s) {
			return i * (t /= s) * t * t * t + n
		},
		easeOutQuart: function(e, t, n, i, s) {
			return -i * ((t = t / s - 1) * t * t * t - 1) + n
		},
		easeInOutQuart: function(e, t, n, i, s) {
			return (t /= s / 2) < 1 ? i / 2 * t * t * t * t + n : -i / 2 * ((t -= 2) * t * t * t - 2) + n
		},
		easeInQuint: function(e, t, n, i, s) {
			return i * (t /= s) * t * t * t * t + n
		},
		easeOutQuint: function(e, t, n, i, s) {
			return i * ((t = t / s - 1) * t * t * t * t + 1) + n
		},
		easeInOutQuint: function(e, t, n, i, s) {
			return (t /= s / 2) < 1 ? i / 2 * t * t * t * t * t + n : i / 2 * ((t -= 2) * t * t * t * t + 2) + n
		},
		easeInSine: function(e, t, n, i, s) {
			return -i * Math.cos(t / s * (Math.PI / 2)) + i + n
		},
		easeOutSine: function(e, t, n, i, s) {
			return i * Math.sin(t / s * (Math.PI / 2)) + n
		},
		easeInOutSine: function(e, t, n, i, s) {
			return -i / 2 * (Math.cos(Math.PI * t / s) - 1) + n
		},
		easeInExpo: function(e, t, n, i, s) {
			return 0 == t ? n : i * Math.pow(2, 10 * (t / s - 1)) + n
		},
		easeOutExpo: function(e, t, n, i, s) {
			return t == s ? n + i : i * (1 - Math.pow(2, -10 * t / s)) + n
		},
		easeInOutExpo: function(e, t, n, i, s) {
			return 0 == t ? n : t == s ? n + i : (t /= s / 2) < 1 ? i / 2 * Math.pow(2, 10 * (t - 1)) + n : i / 2 * (2 - Math.pow(2, -10 * --t)) + n
		},
		easeInCirc: function(e, t, n, i, s) {
			return -i * (Math.sqrt(1 - (t /= s) * t) - 1) + n
		},
		easeOutCirc: function(e, t, n, i, s) {
			return i * Math.sqrt(1 - (t = t / s - 1) * t) + n
		},
		easeInOutCirc: function(e, t, n, i, s) {
			return (t /= s / 2) < 1 ? -i / 2 * (Math.sqrt(1 - t * t) - 1) + n : i / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + n
		},
		easeInElastic: function(e, t, n, i, s) {
			var r = 1.70158,
				a = 0,
				l = i;
			return 0 == t ? n : 1 == (t /= s) ? n + i : (a = a || .3 * s, r = l < Math.abs(i) ? (l = i, a / 4) : a / (2 * Math.PI) * Math.asin(i / l), -l * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * s - r) * (2 * Math.PI) / a) + n)
		},
		easeOutElastic: function(e, t, n, i, s) {
			var r = 1.70158,
				a = 0,
				l = i;
			return 0 == t ? n : 1 == (t /= s) ? n + i : (a = a || .3 * s, r = l < Math.abs(i) ? (l = i, a / 4) : a / (2 * Math.PI) * Math.asin(i / l), l * Math.pow(2, -10 * t) * Math.sin((t * s - r) * (2 * Math.PI) / a) + i + n)
		},
		easeInOutElastic: function(e, t, n, i, s) {
			var r = 1.70158,
				a = 0,
				l = i;
			return 0 == t ? n : 2 == (t /= s / 2) ? n + i : (a = a || s * (.3 * 1.5), r = l < Math.abs(i) ? (l = i, a / 4) : a / (2 * Math.PI) * Math.asin(i / l), t < 1 ? l * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * s - r) * (2 * Math.PI) / a) * -.5 + n : l * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * s - r) * (2 * Math.PI) / a) * .5 + i + n)
		},
		easeInBack: function(e, t, n, i, s, r) {
			return null == r && (r = 1.70158), i * (t /= s) * t * ((r + 1) * t - r) + n
		},
		easeOutBack: function(e, t, n, i, s, r) {
			return null == r && (r = 1.70158), i * ((t = t / s - 1) * t * ((r + 1) * t + r) + 1) + n
		},
		easeInOutBack: function(e, t, n, i, s, r) {
			return null == r && (r = 1.70158), (t /= s / 2) < 1 ? i / 2 * (t * t * ((1 + (r *= 1.525)) * t - r)) + n : i / 2 * ((t -= 2) * t * ((1 + (r *= 1.525)) * t + r) + 2) + n
		},
		easeInBounce: function(e, t, n, i, s) {
			return i - jQuery.easing.easeOutBounce(e, s - t, 0, i, s) + n
		},
		easeOutBounce: function(e, t, n, i, s) {
			return (t /= s) < 1 / 2.75 ? i * (7.5625 * t * t) + n : t < 2 / 2.75 ? i * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + n : t < 2.5 / 2.75 ? i * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + n : i * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + n
		},
		easeInOutBounce: function(e, t, n, i, s) {
			return t < s / 2 ? .5 * jQuery.easing.easeInBounce(e, 2 * t, 0, i, s) + n : .5 * jQuery.easing.easeOutBounce(e, 2 * t - s, 0, i, s) + .5 * i + n
		}
	}),
	function() {
		"use strict";
		var doT = {
				version: "0.2.0",
				templateSettings: {
					evaluate: /\{\{([\s\S]+?)\}\}/g,
					interpolate: /\{\{=([\s\S]+?)\}\}/g,
					encode: /\{\{!([\s\S]+?)\}\}/g,
					use: /\{\{#([\s\S]+?)\}\}/g,
					define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
					conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
					iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
					varname: "it",
					strip: !0,
					append: !0,
					selfcontained: !1
				},
				template: void 0,
				compile: void 0
			},
			global = function() {
				return this || (0, eval)("this")
			}();

		function encodeHTMLSource() {
			var t = {
					"&": "&#38;",
					"<": "&#60;",
					">": "&#62;",
					'"': "&#34;",
					"'": "&#39;",
					"/": "&#47;"
				},
				n = /&(?!#?\w+;)|<|>|"|'|\//g;
			return function(e) {
				return e ? e.toString()
					.replace(n, function(e) {
						return t[e] || e
					}) : e
			}
		}
		global.doT = doT, global.encodeHTML = encodeHTMLSource();
		var startend = {
				append: {
					start: "'+(",
					end: ")+'",
					startencode: "'+encodeHTML("
				},
				split: {
					start: "';out+=(",
					end: ");out+='",
					startencode: "';out+=encodeHTML("
				}
			},
			skip = /$^/;

		function resolveDefs(c, block, def) {
			return ("string" == typeof block ? block : block.toString())
				.replace(c.define || skip, function(m, code, assign, value) {
					return 0 === code.indexOf("def.") && (code = code.substring(4)), code in def || (":" === assign ? def[code] = value : eval("def['" + code + "']=" + value)), ""
				})
				.replace(c.use || skip, function(m, code) {
					var v = eval(code);
					return v ? resolveDefs(c, v, def) : v
				})
		}

		function unescape(e) {
			return e.replace(/\\('|\\)/g, "$1")
				.replace(/[\r\t\n]/g, " ")
		}
		doT.template = function(e, t, n) {
			var i, s, r, a = (t = t || doT.templateSettings)
				.append ? startend.append : startend.split,
				l = 0;
			if (t.use || t.define) {
				var o = global.def;
				global.def = n || {}, i = resolveDefs(t, e, global.def), global.def = o
			} else i = e;
			i = ("var out='" + (t.strip ? i.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g, " ")
						.replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g, "") : i)
					.replace(/'|\\/g, "\\$&")
					.replace(t.interpolate || skip, function(e, t) {
						return a.start + unescape(t) + a.end
					})
					.replace(t.encode || skip, function(e, t) {
						return s = !0, a.startencode + unescape(t) + a.end
					})
					.replace(t.conditional || skip, function(e, t, n) {
						return t ? n ? "';}else if(" + unescape(n) + "){out+='" : "';}else{out+='" : n ? "';if(" + unescape(n) + "){out+='" : "';}out+='"
					})
					.replace(t.iterate || skip, function(e, t, n, i) {
						return t ? (l += 1, r = i || "i" + l, t = unescape(t), "';var arr" + l + "=" + t + ";if(arr" + l + "){var " + n + "," + r + "=-1,l" + l + "=arr" + l + ".length-1;while(" + r + "<l" + l + "){" + n + "=arr" + l + "[" + r + "+=1];out+='") : "';} } out+='"
					})
					.replace(t.evaluate || skip, function(e, t) {
						return "';" + unescape(t) + "out+='"
					}) + "';return out;")
				.replace(/\n/g, "\\n")
				.replace(/\t/g, "\\t")
				.replace(/\r/g, "\\r")
				.replace(/(\s|;|}|^|{)out\+='';/g, "$1")
				.replace(/\+''/g, "")
				.replace(/(\s|;|}|^|{)out\+=''\+/g, "$1out+="), s && t.selfcontained && (i = "var encodeHTML=(" + encodeHTMLSource.toString() + "());" + i);
			try {
				return new Function(t.varname, i)
			} catch (e) {
				throw "undefined" != typeof console && console.log("Could not create a template function: " + i), e
			}
		}, doT.compile = function(e, t) {
			return doT.template(e, null, t)
		}
	}(),
	function(win) {
		var document = win.document,
			SNS = {
				version: "0.46 Beta"
			};
		SNS.flags = {
			zindex: 1,
			openedWindow: [],
			errorId: 0,
			tips: !1,
			tiptype: 0,
			tipsobj: null,
			galaxytip: !1,
			tipTimerId: 0,
			confirmFunc: function() {},
			menuLastId: "overview",
			hasFleetEvent: !1,
			planetTimerId: 0,
			clockTimerId: 0,
			clockObj: document.getElementById("server-time"),
			clockDateObj: null,
			buildingInfoId: 0,
			buildingInfoKey: "",
			buildingInfoCount: 0,
			buildingInQueue: {},
			officerInfoId: null,
			newMessageCount: null,
			allMessageCount: null,
			fleetLineUsed: 0,
			fleetLineMax: 0,
			expLineUsed: 0,
			expLineMax: 0,
			galaxyGalaxy: 0,
			galaxySystem: 0,
			fleetMission: {
				ships: {},
				step: 1,
				targetPid: 0,
				targetPosition: [0, 0, 0],
				targetName: "",
				targetType: 1,
				mission: 0,
				missions: [],
				speedRate: 10,
				stayTime: 0,
				metal: 0,
				crystal: 0,
				deuterium: 0,
				storage: 0,
				time: "",
				consume: 0,
				showStay: !1,
				attackCode: "",
				fleetHash: ""
			},
			fleetSendFlag: !1,
			fleetMoreOpen: !1,
			templateLoaded: {},
			msgCurrentPage: 1,
			floatDivShow: !1,
			unionFleetKey: "",
			highscoreCate: "player",
			highscoreType: "point",
			searchType: 1,
			allianceRole: 0,
			floatCountdownIds: [],
			domCacheById: {},
			animateShow: !0,
			officerExpire: {
				1: 0,
				2: 0,
				3: 0,
				4: 0,
				5: 0
			}
		}, SNS.planet = {}, SNS.serverTime = 0, SNS.building = {}, SNS.template = {}, SNS.queueList = {}, SNS.msgSending = !1, SNS.msgData = [], SNS.config = {
			galaxyMax: 0,
			systemMax: 0
		}, SNS.init = function() {
			var d = window.SNS;
			d.util.loadingComplete(), d.util.localize(), d.serverURL = serverURL, d.xhrFunc = document.getElementById("proxy")
				.contentWindow.xmlHttp, d.getUserPlanetInfo(-1), d.flags.planetTimerId = setInterval(d.getUserPlanetInfo, 1e4), d.flags.clockDateObj = new Date, d.flags.clockTimerId = setInterval(d.clock, 1e3), document.body.onclick = function(e) {
					var t = (e = e || window.event)
						.target || e.srcElement,
						n = t.getAttribute("actid");
					if (null !== n && 0 < (n = parseInt(n)) && "function" == typeof d.click[n]) {
						var i = d.click[n](t);
						i && d.send(i)
					}
				};
			var u = d.get("tooltip"),
				c = d.get("galaxy-tips"),
				f = !1,
				p = !1,
				m = 0;
			document.body.onmouseover = function(e) {
				var t = (e = e || window.event)
					.target || e.srcElement,
					n = t.getAttribute("tips"),
					i = t.getAttribute("tiptype") || 0;
				if (3 != i && p && (p = !1, 0 < m && clearTimeout(m), m = setTimeout(function() {
					c.style.display = "none"
				}, 1e3)), !n) return f = !1, void(u.style.display = "none");
				var s = e.pageX || e.clientX,
					r = e.pageY || e.clientY;
				if ("1" === i || "2" === i) {
					d.get("galaxy-tips-header")
						.innerHTML = n;
					var a = "<table width='100%'><tbody>";
					if ("1" === i) {
						var l = t.getAttribute("position"),
							o = t.getAttribute("planettype");
						a += "<tr><td width='75px' align='center' valign='top' tiptype='3'>[" + l + "]<br /><img tiptype='3' src='" + t.src + "' /></td>", a += "<td valign='top' tiptype='3'>", a += "1" === t.getAttribute("spy") ? "<div actid='48' position='" + l + "' planettype='" + o + "' class='galaxy-tips-row link' tiptype='3'>" + d.lang.spy + "</div>" : "", a += "1" === t.getAttribute("att") ? "<div actid='90' position='" + l + "' planettype='" + o + "' mission='1' class='galaxy-tips-row link' tiptype='3'>" + d.lang.att + "</div>" : "", a += "1" === t.getAttribute("trans") ? "<div actid='90' position='" + l + "' planettype='" + o + "' mission='3' class='galaxy-tips-row link' tiptype='3'>" + d.lang.trans + "</div>" : "", a += "1" === t.getAttribute("undef") ? "<div actid='90' position='" + l + "' planettype='" + o + "' mission='5' class='galaxy-tips-row link' tiptype='3'>" + d.lang.udefense + "</div>" : "", a += "1" === t.getAttribute("deploy") ? "<div actid='90' position='" + l + "' planettype='" + o + "' mission='4' class='galaxy-tips-row link' tiptype='3'>" + d.lang.deploy + "</div>" : "", 2 == o && "1" === t.getAttribute("att") && (a += "<div actid='90' position='" + l + "' planettype='2' mission='9' class='galaxy-tips-row link' tiptype='3'>" + d.lang.destroy + "</div>"), a += "</td>"
					} else "2" === i && (a += "<tr><td width='75px' valign='top' align='center' tiptype='3'>[" + t.getAttribute("position") + "]<br /><img tiptype='3' src='" + t.src + "' /></td>", a += "<td valign='top' tiptype='3'><div class='galaxy-tips-row' tiptype='3'>" + d.lang.metal + ": " + t.getAttribute("metal") + "</div><div class='galaxy-tips-row' tiptype='3'>" + d.lang.crystal + ": " + t.getAttribute("crystal") + "</div><div class='galaxy-tips-row' tiptype='3'>" + d.lang.needrecship + ": " + t.getAttribute("ship") + "</div><div actid='47' position='" + t.getAttribute("position") + "' ship='" + t.getAttribute("ship") + "' class='galaxy-tips-row link' tiptype='3'>" + d.lang.recycle + "</div></td>");
					a += "</tr></tbody></table>", d.get("galaxy-tips-body")
						.innerHTML = a, s = s + 1 + "px", r = r + 1 + "px", c.style.left = s, c.style.top = r, c.style.display = "block", p = !0, 0 < m && clearTimeout(m)
				} else f || (f = !0, u.style.display = "block"), u.innerHTML = n, s = s + 10 + "px", r = r + 10 + "px", u.style.left = s, u.style.top = r
			};
			var s = d.lang.day,
				r = d.lang.hour,
				a = d.lang.min,
				l = d.lang.sec;
			d.parseTime = function(e, t) {
				var n, i = "";
				return 86400 <= e && (i += (n = Math.floor(e / 86400)) + s, e -= 86400 * n, t) || 3600 <= e && (i += (n = Math.floor(e / 3600)) + r, e -= 3600 * n, t) || 60 <= e && (i += (n = Math.floor(e / 60)) + a, e -= 60 * n, t) || 0 < e && (i += e + l), i
			}
		}, SNS.get = function(e) {
			return document.getElementById(e)
		}, SNS.setHTML = function(e) {
			var t = document;
			for (id in e) t.getElementById(id)
				.innerHTML = e[id]
		}, SNS.setDom = function(e) {
			var t = document;
			for (id in e) {
				var n = t.getElementById(id);
				for (atr in e[id]) "innerHTML" === atr ? n.innerHTML = e[id][atr] : "className" === atr ? n.className = e[id][atr] : n.setAttribute(atr, e[id][atr])
			}
		}, SNS.show = function(e) {
			this.flags.animateShow ? TweenLite.to(document.getElementById(e), .7, {
					css: {
						width: "654px",
						height: "300px"
					},
					ease: Cubic.easeOut
				}) : $("#" + e)
				.show()
		}, SNS.hide = function(e) {
			this.flags.animateShow ? TweenLite.to(document.getElementById(e), .7, {
					css: {
						width: 0,
						height: 0
					},
					ease: Cubic.easeOut
				}) : $("#" + e)
				.hide()
		}, SNS.addWindow = function(e) {
			this.show(e);
			for (var t = this.flags.openedWindow, n = t.length, i = [], s = 0; s < n; s++) t[s] != e && i.push(t[s]);
			i.push(e), this.flags.openedWindow = i, this.sortWindow()
		}, SNS.removeWindow = function() {
			var e = this.flags.openedWindow;
			0 < e.length && (document.getElementById(e[e.length - 1])
				.style.display = "none", this.flags.openedWindow.pop(), this.sortWindow())
		}, SNS.sortWindow = function() {
			var e = this.flags.openedWindow,
				t = e.length;
			if (0 < t) {
				this.flags.zindex++;
				for (var n = this.flags.zindex, i = 0; i < t; i++) document.getElementById(e[i])
					.style.zIndex = n + 2 * i;
				document.getElementById("mask")
					.style.zIndex = n + 2 * t - 3, document.getElementById("mask")
					.style.display = "block"
			} else document.getElementById("mask")
				.style.display = "none"
		}, SNS.send = function(e) {
			this.sendNow(e)
		}, SNS.sendNow = function(e) {
			var i = this.xhrFunc();
			i.open("POST", SNS.serverURL), i.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), i.onreadystatechange = function() {
				if (4 == i.readyState || "complete" == i.readyState) {
					for (var e = SNS.jsonDecode(i.responseText), t = e.length, n = 0; n < t; n++) 0 < e[n].error ? SNS.errmsg(e[n].error, e[n].msg) : SNS.handle[e[n].mod](e[n]);
					0 < SNS.msgData.length ? SNS.sendNow(SNS.msgData.shift()) : SNS.msgSending = !1
				}
			};
			var t, n = [];
			for (t in e) n.push(t + "=" + encodeURIComponent(e[t]));
			e = n.join("&"), i.send(e)
		}, SNS.jsonDecode = function(d) {
			var c = {};
			if ("undefined" != typeof JSON) try {
				c = JSON.parse(d)
			} catch (e) {} else try {
				c = eval("(" + d + ")")
			} catch (e) {}
			return c
		}, SNS.msgbox = function(e) {
			var t = document;
			t.getElementById("box-notify-content")
				.innerHTML = e, t.getElementById("box-notify-ok")
				.style.display = "block", t.getElementById("box-notify-yes")
				.style.display = "none", t.getElementById("box-notify-no")
				.style.display = "none", t.getElementById("mask")
				.className = "", t.getElementById("box-notify")
				.className = ""
		}, SNS.fadebox = function(e) {
			var t = document.createElement("div");
			t.className = "fadebox", t.innerHTML = e, document.body.appendChild(t), this.flags.animateShow ? TweenLite.to(t, .8, {
				css: {
					top: "190px",
					opacity: 0
				},
				ease: Cubic.easeOut,
				delay: 1,
				onComplete: function() {
					document.body.removeChild(t)
				}
			}) : setTimeout(function() {
				document.body.removeChild(t)
			}, 1e3)
		}, SNS.confirmbox = function(e, t) {
			var n = document;
			n.getElementById("box-notify-content")
				.innerHTML = e, n.getElementById("box-notify-ok")
				.style.display = "none", n.getElementById("box-notify-yes")
				.style.display = "block", n.getElementById("box-notify-no")
				.style.display = "block", n.getElementById("mask")
				.className = "", n.getElementById("box-notify")
				.className = "", t && (this.confirmFunc = t)
		}, SNS.errmsg = function(e, t) {
			var n = e.toString()
				.substr(0, 1),
				i = e.toString()
				.substring(1),
				s = "\x3c!-- " + (this.flags.errorId = i) + " --\x3e" + this.lang["err" + i];
			1e3 == i ? (clearInterval(SNS.flags.planetTimerId), clearInterval(SNS.flags.clockTimerId), SNS.click = []) : 1040 == i ? (clearInterval(SNS.flags.planetTimerId), clearInterval(SNS.flags.clockTimerId), s += " " + this.getDate(t, !0), SNS.click = []) : 1002 == i ? SNS.util.newPlayerPage() : 1001 == i && (clearInterval(SNS.flags.planetTimerId), clearInterval(SNS.flags.clockTimerId), SNS.click = {
				17: function() {
					SNS.util.enterPage()
				}
			}), "1" === n ? this.msgbox(s) : this.fadebox(s)
		}, SNS.checkEvilStr = function(e) {
			for (var t = ["<", ">", "/", "\\", "#", '"', "'", " "], n = t.length, i = 0; i < n; i++)
				if (-1 < e.indexOf(t[i])) return !0;
			return !1
		}, SNS.getUserPlanetInfo = function(e) {
			e = e || 0, SNS.send({
				mod: "planet",
				xid: e
			}), SNS.flags.hasFleetEvent && SNS.getFleetEvent()
		}, SNS.getPlanetList = function(e) {
			e = e || -3, SNS.send({
				mod: "planetlist",
				xid: e
			})
		}, SNS.getFleetEvent = function(e) {
			e = e || 0, SNS.send({
				mod: "event",
				xid: e
			})
		}, SNS.hideBuildingInfo = function() {
			0 < this.flags.buildingInfoId && (this.hide("building-info"), this.flags.buildingInfoId = 0, SNS.flags.buildingInfoKey = ""), null !== this.flags.officerInfoId && (this.hide("officer-info"), this.flags.officerInfoId = null)
		}, SNS.hideNotifyBox = function() {
			document.getElementById("mask")
				.className = "hidden", document.getElementById("box-notify")
				.className = "hidden"
		}, SNS.clock = function() {
			var e = window.SNS;
			e.serverTime++, e.flags.clockDateObj.setTime(1e3 * e.serverTime);
			var t = e.flags.clockDateObj.getHours();
			t < 10 && (t = "0" + t);
			var n = e.flags.clockDateObj.getMinutes();
			n < 10 && (n = "0" + n);
			var i = e.flags.clockDateObj.getSeconds();
			i < 10 && (i = "0" + i), e.flags.clockObj.innerHTML = t + ":" + n + ":" + i
		}, SNS.getDate = function(e, t) {
			var n = new Date;
			n.setTime(1e3 * e);
			var i = "";
			return t && (i = " " + n.getHours() + ":" + n.getMinutes() + ":" + n.getSeconds()), n.getFullYear() + "-" + (n.getMonth() + 1) + "-" + n.getDate() + i
		}, SNS.queueReset = function() {
			$("#content-wrapper .building-timer[status='1']")
				.each(function(e, t) {
					var n = t.id,
						i = "box-" + n;
					SNS.countdown.instance[n] ? (void 0 !== SNS.countdown.instance[n].dom && SNS.countdown.instance[n].clear(), delete SNS.countdown.instance[n]) : (t.removeAttribute("status"), t.innerHTML = "", t.style.display = "none"), SNS.countdown.instance[i] && (void 0 !== SNS.countdown.instance[i].dom && SNS.countdown.instance[i].clear(), delete SNS.countdown.instance[i])
				}), $(".building-upgrade")
				.each(function(e, t) {
					t.innerHTML = ""
				});
			for (var e = ["queue-building-table", "queue-research-table", "queue-ship-table"], t = 0; t < 3; t++)
				for (var n = this.get(e[t]), i = n.rows.length, s = 0; s < i; s++) n.deleteRow(-1)
		}, SNS.queueRender = function() {
			var e = {
					building: !1,
					tech: !1,
					ship: !1
				},
				t = {},
				n = {
					building: this.get("queue-building-table"),
					tech: this.get("queue-research-table"),
					ship: this.get("queue-ship-table")
				},
				i = {
					1: "building",
					2: "tech",
					3: "ship",
					4: "ship",
					5: "building"
				},
				s = {
					building: null,
					tech: null,
					ship: null
				};
			for (var r in this.queueList) {
				var a = this.queueList[r],
					l = 0,
					o = this.building[a.bid].type,
					d = i[o];
				switch (o) {
					case 1:
					case 2:
					case 5:
						l = this.building[a.bid].count + a.count;
						break;
					case 3:
					case 4:
						void 0 === t[a.bid] ? t[a.bid] = a.count : t[a.bid] += a.count, l = t[a.bid]
				}
				if (this.get("building-upgrade-" + a.bid)
					.innerHTML = l, 0 < a.starttime) {
					var u = n[d].insertRow(-1),
						c = n[d].insertRow(-1),
						f = n[d].insertRow(-1),
						p = document.createElement("td");
					p.colSpan = 2, p.innerHTML = this.lang["m" + a.bid], u.appendChild(p);
					var m = document.createElement("td"),
						g = document.createElement("td");
					m.innerHTML = "<img tips='" + (3 == this.building[a.bid].type || 4 == this.building[a.bid].type ? "" : 0 < a.count ? this.lang.str98 : this.lang.str99) + "' actid='19' buildtype='" + this.building[a.bid].type + "' buildid='" + a.bid + "' buildkey='" + r + "_" + d + "' count='" + a.count + "' width='40' height='40' src='img/building/" + a.bid + ".gif' /><br />" + (3 === this.building[a.bid].type || 4 === this.building[a.bid].type ? this.lang.count + ": " + a.count : this.lang.lvl + ": " + (this.building[a.bid].count + a.count));
					var h = a.starttime - this.serverTime;
					0 < a.count ? h += a.costtime * a.count : h -= a.costtime * a.count, this.get("building-timer-" + a.bid)
						.setAttribute("status", "1"), this.timer("building-timer-" + a.bid, h, function() {
							SNS.send({
								mod: "planet",
								xid: 2
							})
						});
					var y = "";
					"building" !== a.type && "tech" !== a.type || (y = 0 < a.count ? this.lang.str96 : this.lang.str97, y += this.building[a.bid].count + a.count + "<br>"), g.innerHTML = y + this.lang.lefttime + ":<br /><span id='box-building-timer-" + a.bid + "'></span>", c.appendChild(m), c.appendChild(g), this.timer("box-building-timer-" + a.bid, h, function() {});
					var v = document.createElement("td");
					v.colSpan = 2, v.innerHTML = "<div class='button140' actid='105' btype='" + d + "'>" + this.lang.str117 + "</div>", f.appendChild(v), e[d] = !0
				} else {
					var b = this.get("building-timer-" + a.bid);
					if (b.innerHTML = this.lang.inqueue, b.setAttribute("status", "1"), b.style.display = "block", b.style.visibility = "visible", null === s[d]) {
						var x = n[d].insertRow(-1);
						(_ = document.createElement("td"))
						.colSpan = 2, _.innerHTML = this.lang.inqueue, x.appendChild(_), x = n[d].insertRow(-1), (_ = document.createElement("td"))
							.colSpan = 2, x.appendChild(_), s[d] = _
					}
					s[d].innerHTML += "<img class='queue-image' tips='" + this.lang["m" + a.bid] + " " + (3 === this.building[a.bid].type || 4 === this.building[a.bid].type ? this.lang.count + ": " + a.count : this.lang.lvl + ": " + (this.building[a.bid].count + a.count)) + "<br />" + (3 === this.building[a.bid].type || 4 === this.building[a.bid].type ? "" : 0 < a.count ? this.lang.str98 : this.lang.str99) + "' actid='19' count='" + a.count + "' buildtype='" + this.building[a.bid].type + "' buildid='" + a.bid + "' buildkey='" + r + "_" + d + "' width='40' height='40' src='img/building/" + a.bid + ".gif' />"
				}
			}
			for (var r in e)
				if (!e[r]) {
					var _;
					x = n[r].insertRow(-1), (_ = document.createElement("td"))
						.colSpan = 2, _.className = "idle", _.innerHTML = this.lang["no" + r + "upgrade"], x.appendChild(_)
				}
		}, SNS.getPreCondition = function(e) {
			var t = [];
			for (i in e) t.push("<span actid='12' bid='" + i + "' class='" + (this.building[i].count < e[i] ? "red hand" : "green") + "'>" + this.lang["m" + i] + e[i] + this.lang.level + "</span>");
			return t.join(" ")
		}, SNS.getQueueKey = function(e) {
			for (var t in this.queueList)
				if (this.queueList[t].bid === e) return SNS.flags.buildingInfoKey = t + "_" + this.queueList[t].type, void(SNS.flags.buildingInfoCount = this.queueList[t].count);
			SNS.flags.buildingInfoKey = "", SNS.flags.buildingInfoCount = 0
		}, win.onload = SNS.init, win.SNS = SNS
	}(window), SNS.lang = {
		gametitle: "宇宙帝国",
		friends: "好友",
		highscore: "排行榜",
		setup: "设置",
		search: "搜索",
		logout: "退出",
		overview: "概况",
		station: "基地",
		research: "科技",
		shipyard: "造船厂",
		defense: "防御",
		fleet: "舰队",
		galaxy: "银河系",
		system: "太阳系",
		alliance: "联盟",
		shop: "商店",
		officer: "事务官",
		diameter: "直径",
		temperature: "温度",
		coordinate: "坐标",
		points: "积分",
		building: "建筑物",
		shipdefense: "飞船/防御",
		coding: "编码中，尚未完成",
		message: "消息",
		tutorial: "游戏引导",
		payment: "充值",
		n: "序号",
		donation: "捐赠",
		count: "数量",
		lvl: "等级",
		score: "分数",
		unknow: "未知",
		diff: "差距",
		buildtime: "建造时间",
		researchtime: "研究时间",
		needenergy: "所需能量",
		build: "建造",
		upgrade: "升级",
		downgrade: "降级",
		notice: "注意",
		yes: "是",
		no: "否",
		ok: "是",
		save: "保存",
		inqueue: "队列中",
		day: "天",
		hour: "小时",
		min: "分",
		sec: "秒",
		rank: "排名",
		name: "名称",
		moon: "月球",
		player: "玩家",
		member: "成员",
		action: "操作",
		reset: "重置",
		lefttime: "剩余时间",
		endtime: "结束时间",
		planet: "星球",
		homeplanet: "母星",
		active: "活动",
		fieldtips: "星球可用空间 / 星球最大空间",
		planetchange: "切换到",
		fleetlineused: "航线已被占用",
		fleetline: "普通航线",
		expline: "探险航线",
		colonize: "殖民",
		moveto: "迁移",
		display: "显示",
		expedition: "远征探险",
		rename: "星球重命名",
		giveup: "放弃星球",
		renamegiveup: "星球重命名 放弃",
		task: "任务",
		weak: "弱",
		strong: "强",
		holiday: "休",
		ban: "禁",
		vacation: "假期模式",
		nofleets: "没有发现舰队活动",
		fleets1: "我的舰队",
		fleets2: "友方舰队",
		fleets3: "敌方舰队",
		more: "更多细节",
		prev: "上一步",
		next: "下一步",
		distance: "距离",
		speed: "速度",
		flytime: "航行时间(单程)",
		staytime: "停留时间(小时)",
		deutconsume: "重氢燃料消耗",
		vcapacity: "可载货容量",
		fleetgo: "舰队出发",
		target: "目标",
		loadmin: "清空",
		loadmax: "装载满",
		loadcap: "装载容量",
		mailbox: "收件箱",
		mailsend: "发信息",
		mailrcv: "收件人",
		mailreply: "回复",
		title: "标题",
		content: "正文",
		mailsendok: "邮件发送成功",
		sender: "发件人",
		date: "日期",
		back: "返回",
		mailslt: "--选择操作--",
		mailmak: "标记为已读",
		maildel: "删除所选",
		maildelall: "删除所有已读",
		startpos: "出发坐标",
		targetpos: "目标坐标",
		ssattack: "物理攻击",
		ssdefense: "物理防御",
		emattack: "电磁攻击",
		emdefense: "电磁防御",
		metal: "金属",
		crystal: "水晶",
		deuterium: "重氢",
		darkmatter: "暗物质",
		energy: "能量",
		nowhave: "当前拥有",
		capacity: "储存容量",
		production: "当前产量",
		consume: "消耗量",
		prorate: "生产率",
		baseprod: "基本产量",
		upgradeto: "升级至",
		level: "级",
		need: "需要",
		protectwarehouse: "保护仓",
		unitprice: "单位造价",
		nobuildingupgrade: "没有建筑物在建造中",
		notechupgrade: "没有科技在研究中",
		noshipupgrade: "没有飞船或防御在建造中",
		nodeuterium: "重氢不够，跳转回本星球所在太阳系 (每次查看非本太阳系需消耗10点重氢)",
		att: "进攻",
		spy: "探测",
		trans: "运输",
		deploy: "部署",
		udefense: "联防",
		destroy: "摧毁",
		sendmsg: "发消息",
		friendreq: "交友请求",
		debris: "废墟",
		recycle: "回收",
		needrecship: "需要回收船",
		fleetmiss: "请选择舰队任务",
		recall: "召回舰队",
		unionattack: "联合攻击",
		nav1: "选择飞船",
		nav2: "任务目标",
		nav3: "舰队任务",
		sendok: "舰队发送成功",
		callbackok: "舰队成功召回",
		fleetret: "返航",
		fleetdet: "舰队详情",
		syssender: "太空监控",
		win: "赢",
		lose: "输",
		draw: "平",
		from: "来自",
		attack: "攻击",
		defense: "防御",
		plunder: "掠夺资源",
		chance: "几率",
		repair: "修复",
		hstitle0: "个人积分排行榜",
		hstitle1: "个人科技排行榜",
		hstitle2: "个人飞船排行榜",
		hstitle5: "联盟积分排行榜",
		hstitle6: "联盟科技排行榜",
		hstitle7: "联盟飞船排行榜",
		phalanxscan: "感应阵扫描",
		energycost: "所需能量",
		energyprod: "能量产量",
		refstatus0: "待确认",
		refstatus1: "已确认",
		refstatus2: "已作废",
		refstatus3: "已兑换",
		free_darkmatter: "免费获得暗物质",
		SYSTEMPLANETLANG1: "银河的边缘",
		SYSTEMPLANETLANG2: "未被占据的位置",
		fleet_back: "舰队返回",
		fleet_deploy_ok: "舰队部署任务完成",
		fleet_transport_ok: "舰队运输任务完成",
		target_planet: "目标星球",
		fleet_spy_title: "舰队探测报告",
		fleet_spied_title: "发现探测卫星",
		fleet_battle_title: "战斗报告",
		fleet_trans_title: "舰队运输报告",
		fleet_recy_title: "舰队回收报告",
		fleet_deploy_title: "舰队部署报告",
		fleet_expedition_title: "舰队探险报告",
		fleet_destroy_title: "死星毁月报告",
		fleet_colonize_title: "舰队殖民报告",
		fleet_back_title: "舰队返航",
		target_no_debris: "目标位置没有发现废墟",
		target_no_planet: "目标位置没有发现星球",
		fleet_decide_back: "舰队决定返航",
		darkmatter_share_title: "获得了一些暗物质",
		expe_all_lost_1: "我们从远征队收到的最后一个事件是：一个正在生成的黑洞清晰照片。",
		expe_all_lost_2: "您的探险队已被吸进了黑洞，彻底摧毁！",
		expe_all_lost_3: "旗舰的核心熔炉崩溃导致了一系列反应，在一次巨大的爆炸中摧毁了所有远征队。",
		expe_all_lost_4: "远征队没能返回。我们的学院还在尽量查出发生了什么事情，但是舰队好像永远消失了。",
		expe_all_lost_5: "和远征队的联络已经中断了。我们可以解密他们最后的消息。他们遭到了猛烈进攻，入侵者不明。",
		expe_part_lost_1: "我们的远征队被一群不明船只攻击，这样的敌人我们还是第一次看到！",
		expe_part_lost_2: "一些野蛮人用到现在都无法命名的飞船攻击我们，我们不得不还击。",
		expe_part_lost_3: "远征队跟随的求救信号是星际海盗设置的。一场战斗无法避免。",
		expe_part_lost_4: "一些疯狂的星际海盗试图占领我们的远征队，我们进行了顽强的反击。",
		expe_part_lost_5: "我们需要和一群异型战斗，对方的火力比较强。",
		expe_find_res_1: "在一个封闭的星球，我们发现了一些能轻易到达的资源田，收集的相当成功。",
		expe_find_res_2: "我们发现一颗小行星，在上面有一些资源可以被收集。",
		expe_find_res_3: "我们遇到一些古战争中的古舰队残骸。一些零件可以保存和回收。",
		expe_find_res_4: "我们发现了在剧毒大气下的射电天文望远镜。但是扫描显示其内有一些资源。在自动机器人的帮助下，我们尽量多的收集资源。",
		expe_find_res_5: "我们遇到一些殖民船，他们需要食物和药品。作为交换，我们得到了一些有用的资源。",
		expe_find_dm_1: "我们远征队报告一个特殊的奇妙现象。在船只护盾的能量储存中有暗物质积累。我们的工程师尽自己的能力保存这些暗物质。",
		expe_find_dm_2: "我们在一艘小船的隔板上遇到了一个奇怪的外星人，他给了我们一盒暗物质用来交换一些简单的计算器。",
		expe_find_dm_3: "你的远征队收到一个求救信号。一艘巨型货船被一个星球的巨大的引力所捕获。在货船成功摆脱后，船长郑重宣布，救了他们的人会是他们的最爱和贵宾，并给予我们一些暗物质。",
		expe_find_dm_4: "远征队跟着一些奇怪的信号发现了一颗小行星。在小行星核心，发现了一些暗物质。我们带走了小行星，探险家尽量提取暗物质。",
		expe_find_dm_5: "我们的远征队占领了一艘幽灵船，它装载了一些暗物质。我们没有发现任何迹象能说明发生在原来船员身上的事，但是我们的工程师成功提取了这些暗物质。",
		expe_find_ship_1: "我们的远征队发现一颗星球，其几乎被一连串的战争所摧毁。在轨道上漂浮了各种飞船。工程师尽力修复一些。我们可能也会知道在这里发生的事情。",
		expe_find_ship_2: "我们找到一个废弃的海盗基地。在机库停放了一些旧船。我们的工程师正在分析哪些船只还能用。",
		expe_find_ship_3: "我们找到一支舰队的残留。工程师直接去完整的船只并尽力让他们重新运转。",
		expe_find_ship_4: "我们遇到一个废弃很久的要塞。在要塞机库发现了一些飞船。工程师尽力使一些重新飞行。",
		expe_find_ship_5: "远征队的探测家发现了完美的被遗弃船只。",
		expe_find_nothing_1: "一种纯能量构造的生物让所有的远征成员只盯着屏幕上的催眠图案。当大部分人清醒时，远征不得不取消因为只有少量重氢了。",
		expe_find_nothing_2: "一个未预料的引擎卷轴反转，注定了远征的失败，第一份报告告诉我们他们没有发现任何值得高兴的东西。",
		expe_find_nothing_3: "我们的远征队穿过一个已经废弃很久的殖民地。降落以后，我们的船员感染了一种外星病毒并开始发高烧。据说这种病毒曾经传播到这个星球的每一个角落并摧毁了这里的文明。我们的远征队为了治疗这些患病的船员开始返航。我们必须取消这次任务，我们一无所获的回家了。",
		expe_find_nothing_4: "我们现在知道红色，5级异常情况不光可以混乱船只导航，也会使船员产生幻觉。远征队没能带回任何东西。",
		expe_find_nothing_5: "旗舰反应堆的发生故障。幸运的是，工程师非常尽职并避免了最坏的结果。补给需要一点时间，远征队徒劳而归。",
		msgstr1: "舰队从",
		msgstr2: "返回",
		msgstr3: "携带资源",
		msgstr4: "任务目标",
		msgstr5: "不存在，舰队决定返航。",
		msgstr6: "来自",
		msgstr7: "的舰队给您的星球",
		msgstr8: "带来一些资源",
		msgstr9: "未发现废墟，舰队决定返航。",
		msgstr10: "回收船在",
		msgstr11: "收集到一些资源:",
		msgstr12: "的舰队部署到您的星球:",
		msgstr13: "进攻方",
		msgstr14: "防御方",
		msgstr15: "战斗结果",
		msgstr16: "进攻方获胜",
		msgstr17: "防御方获胜",
		msgstr18: "平局",
		msgstr19: "进攻方战斗力",
		msgstr20: "防御方战斗力",
		msgstr21: "进攻方损失",
		msgstr22: "防御方损失",
		msgstr23: "产生月球",
		msgstr24: "参战",
		msgstr25: "损失",
		msgstr26: "修复",
		msgstr27: "剩余",
		msgstr28: "防守方没有任何飞船或防御设施",
		msgstr29: "主进攻方",
		msgstr30: "主防御方",
		msgstr31: "联合进攻方",
		msgstr32: "联合防御方",
		msgstr33: "科技加成",
		msgstr34: "探测卫星未被摧毁",
		msgstr35: "探测卫星已被摧毁",
		msgstr36: "一只来自",
		msgstr37: "的舰队探测了您的星球",
		msgstr38: "殖民成功，快开发这一新的星球来扩张您的帝国",
		msgstr39: "目标位置已经被其他星球占据，无法殖民",
		msgstr40: "找到一些暗物质",
		msgstr41: "损失一些飞船",
		msgstr42: "找到一些飞船",
		msgstr43: "找到一些资源",
		msgstr44: "可拥有的星球数量已达到上限，无法殖民",
		msgstr45: "死星的武器系统开始对月球发射一波波的重力震动波，震动间开始产生共鸣，最终摧毁了整个月球，月球的所有建筑都被摧毁。",
		msgstr46: "死星的武器系统开始对月球发射一波波的重力震动波，但震动并没有对月球的地质结构造成致命的伤害。",
		msgstr47: "月球损毁的几率",
		msgstr48: "舰队损毁的几率",
		msgstr49: "你的舰队来不及避开，被月球爆炸的碎片击中，全部被摧毁了。",
		msgstr50: "进攻方的舰队来不及避开，被月球爆炸的碎片击中，全部被摧毁了。",
		msgstr51: "您推荐的玩家",
		msgstr52: "刚进行了充值，您也相应的获得一定的暗物质: ",
		msgstr53: "您的星球数量已达到科技允许的上限，无法殖民",
		str1: "通过该设定，您可以修改星球名字或者放弃星球",
		str2: "星球命名长度须为2至20个字符<br>星球名字可由数字字母以及中文组成<br>一些特殊字符禁止使用，例如: < >等",
		str3: "星球上的所有舰队，建筑物，防御，都将会消失",
		str4: "您不可以放弃母星",
		str5: "星球重命名成功",
		str6: "好友名单",
		str7: "我的好友",
		str8: "好友请求",
		str9: "邀请您的好友",
		str10: "您还没有好友哦",
		str11: "暂无好友请求",
		str12: "联合进攻代号",
		str13: "好友名单",
		str14: "邀请&gt;&gt;",
		str15: "踢出&lt;&lt;",
		str16: "联合舰队参与者",
		str17: "直接邀请",
		str18: "邀请好友",
		str19: "最多5个",
		str20: "成功创建联合舰队",
		str21: "快捷地址",
		str22: "联合进攻",
		str23: "创建联盟",
		str24: "搜索联盟",
		str25: "联盟名称",
		str26: "联盟太空站需达到二级",
		str27: "联盟名称长度3-8个字符",
		str28: "联盟名称不可包含一些特殊字符",
		str29: "好友申请已经发出",
		str30: "刚好对方也向你发过好友申请，现在你们是好友了",
		str31: "联盟信息",
		str32: "盟主",
		str33: "成员",
		str34: "请输入玩家,星球或联盟的名称",
		str35: "玩家名称",
		str36: "联盟名称",
		str37: "星球名称",
		str38: "没有找到相关的结果",
		str39: "联盟首页",
		str40: "成员列表",
		str41: "申请审核",
		str42: "联盟论坛",
		str43: "提交成功",
		str44: "联盟图标",
		str45: "副盟主",
		str46: "入盟积分",
		str47: "加成点数",
		str48: "物理攻击加成",
		str49: "电磁攻击加成",
		str50: "物理防御加成",
		str51: "电磁防御加成",
		str52: "重置加成点数",
		str53: "重新分配",
		str54: "联盟成员数",
		str55: "退出联盟",
		str56: "解散联盟",
		str57: "确定要解散联盟？",
		str58: "确定要退出联盟？",
		str59: "踢出联盟",
		str60: "确定要将玩家踢出联盟?",
		str61: "玩家已被踢出联盟",
		str62: "升为副盟主",
		str63: "确定要将玩家升为副盟主?",
		str64: "玩家已被升为副盟主",
		str65: "降为普通成员",
		str66: "确定要将玩家降为普通成员?",
		str67: "玩家已被降为普通成员",
		str68: "申请加入联盟",
		str69: "联盟申请已经发出",
		str70: "通过联盟申请",
		str71: "拒绝联盟申请",
		str72: "没有申请记录",
		str73: "7天未登陆游戏",
		str74: "28天未登陆游戏",
		str75: "该玩家很弱小",
		str76: "该玩家很强大",
		str77: "该玩家休假中",
		str78: "该玩家已被禁",
		str89: "确定要将星球迁移到新的坐标？此次迁移将消耗2000暗物质<br />若此星球包含月球，将额外消耗500暗物质。",
		str90: "间谍卫星快捷发送数量",
		str91: "设置已保存",
		str92: "联防中",
		str93: "探险中",
		str94: "切换到月球",
		str95: "切换到星球",
		str96: "升级到",
		str97: "降级到",
		str98: "是否取消建造或升级?",
		str99: "是否取消降级?",
		str100: "确定要取消建造或升级?",
		str101: "确定要取消降级?",
		str102: "该星球未发现舰队活动",
		str103: "感应阵扫描结果",
		str104: "舰队传送",
		str105: "选择空间传送目标",
		str106: "起始坐标",
		str107: "目的地坐标",
		str108: "选择传送飞船",
		str109: "传送",
		str110: "舰队已传送至目标月球",
		str111: "购买暗物质",
		str112: "1周仅需",
		str113: "1月仅需",
		str114: "事务官雇佣成功",
		str115: "未雇佣",
		str116: "需要花费",
		str117: "加速完成",
		str118: "已加速提前完成",
		str119: "星球方圆已增加",
		str120: "当前资源已经达到储存上限，无需购买",
		str121: "资源购买成功",
		str122: "联盟点数购买成功",
		str123: "确定要放弃这颗星球吗？星球上所有建筑物舰队将消失，此操作不可恢复！",
		str124: "显示动画效果",
		str125: "前提条件",
		str126: "应用条件",
		str127: "科技数据",
		str128: "基础数值",
		str129: "科技加成",
		str130: "联盟加成",
		str131: "没有任何条件",
		str132: "每小时产量",
		str133: "保护仓容量",
		str134: "星球上没有任何舰队或防御",
		str135: "邀请您的朋友一起来玩宇宙帝国！免费获得暗物质<br>您的邀请链接是:<br><br>{invite_link}<br><br>把以上链接发给您的好友，当他注册并进入游戏，您将获得30点暗物质（需系统确认玩家的真实性），并且每次该玩家购买了暗物质，您也将立即获得其5%购买量的暗物质。<br><br>如利用此功能作弊获取暗物质，可能会被封号。",
		str136: "您还没有邀请好友",
		str137: "已成功邀请的好友",
		str138: "至少到",
		str139: "该账号将处于假期模式中",
		str140: "假期模式可以在您长时间不在的时候,保护您的帐号.只能在没有任何舰队活动的状况下,您才可启动假期模式.<br>当假期模式成功启动后,您将不会受到任何新攻击.但在启动假期模式之前的攻击都将会正常进行.同时,假期模式会将你的资源产量都设定为0产量的状态.<br>假期模式启动的最短时间为2天,在此之前,您无法提前结束假期模式.",
		str141: "您当前可以免费迁移至此位置！",
		str142: "生产率调节",
		str143: "时产量",
		str144: "日产量",
		str145: "周产量",
		str146: "战斗报告",
		str147: "爆发战役",
		str148: "查看战报详情",
		str149: "损失部队",
		str150: "武器",
		str151: "防御盾",
		str152: "装甲",
		str153: "获胜",
		str154: "双方未决出胜负",
		str155: "没有防御建筑可被修复",
		str156: "到达时间",
		str157: "返程时间",
		str158: "发起进攻",
		str159: "攻击力",
		str160: "结构强度",
		str161: "快速射击",
		str162: "攻击加成",
		str163: "防御加成",
		str164: "结构强度加成",
		str165: "分钟内有活动过",
		str166: "舰队发送中，请稍后再试，不要重复提交",
		str167: "免费资源领取成功(金属5000, 水晶2000, 重氢1000)",
		str168: "探测返程邮件",
		err99999: "内部错误，请稍后重试",
		err1: "建造数量错误",
		err2: "研究实验室在升级中",
		err3: "资源不够",
		err4: "造船厂在升级中",
		err5: "星球可用空间不够",
		err6: "有科技在研究中，实验室无法升级",
		err7: "有飞船或防御在建造中，造船厂无法升级",
		err8: "前置条件未达到",
		err9: "已经在建造中",
		err10: "请先建造研究实验室",
		err11: "建造列队已满",
		err12: "纳米机器人工厂升级中,无法升级飞船建造基地",
		err13: "月球上无法建造此种建筑",
		err14: "研究列队已满",
		err15: "请先建造造船厂",
		err16: "能量防御罩只能各建造一个",
		err17: "请选择舰队要执行的任务",
		err18: "舰队装载的资源超过了舰队的最大容量",
		err19: "请输入收件人名字",
		err20: "请输入信件标题",
		err21: "请输入信件内容",
		err22: "不可以给自己发信",
		err23: "名称包含非法字符",
		err24: "搜索关键字包含非法字符",
		err25: "请输入正确的间谍卫星数量",
		err26: "月球上无法进行研究",
		err27: "未选择目标月球",
		err28: "您处于假期模式",
		err29: "已有科技在研究中",
		err1000: "游戏已经停服，请关注官网 www.wogame.net",
		err1001: "登陆状态过期，请重新登陆",
		err1002: "用户不存在",
		err1003: "星球不存在",
		err1004: "已经在建造队列中",
		err1005: "无法建造或升级",
		err1006: "舰队不能执行这个任务",
		err1007: "没有那么多飞船可以派遣",
		err1008: "星球上重氢不足以支持本次航行",
		err1009: "携带的资源超过了飞船的容量",
		err1010: "探险航线已满，无法发送舰队",
		err1011: "普通航线已满，无法发送舰队",
		err1012: "收件人不存在",
		err1013: "发起联合进攻的舰队已经不存在",
		err1014: "联合进攻代号不能为空",
		err1015: "进攻舰队已经不存在",
		err1016: "邀请的玩家不能为空",
		err1017: "联合进攻代号包含非法字符",
		err1018: "舰队速度太慢，无法加入联合攻击",
		err1019: "舰队已经开始返回，无法创建联合进攻",
		err1020: "需联盟太空站达到二级",
		err1021: "您已经加入了联盟，不能再创建",
		err1022: "联盟名字包含有非法字符",
		err1023: "联盟名字不能为空",
		err1024: "联盟名称长度不符合要求",
		err1025: "联盟不存在",
		err1026: "请输入正整数",
		err1027: "剩余技能点数不够",
		err1028: "目标位置不是有效的坐标",
		err1029: "目标位置已经被占据",
		err1030: "您的暗物质不够",
		err1031: "您当天星球迁移次数已经达到最大值",
		err1032: "您当天加速次数已经达到最大值",
		err1033: "您当天对此玩家的攻击次数已经达到最大值",
		err1034: "您当天邮件发送次数已经达到最大值",
		err1035: "重氢不够，无法进行感应扫描",
		err1036: "目标月球没有空间传送门",
		err1037: "目标月球空间传送门处于冷却状态中",
		err1038: "您当天购买资源次数已经达到最大值",
		err1039: "星球名称不符合要求(2-7个字符)",
		err1040: "您当前已被禁止进入游戏, 直至",
		err1041: "请输入正确的网址，如 http://hi.baidu.com/",
		err1042: "目标网址未找到验证字符串",
		err1043: "母星不可放弃",
		err1044: "该星球上有建筑、科技升级中或舰队活动",
		err1045: "该星球的月球上又建筑或科技升级中",
		err1046: "您已经注册过了，请重新进入游戏",
		err1047: "星球名称包含非法字符",
		err1048: "玩家名称包含非法字符",
		err1049: "玩家名称不符合要求(2-7个字符)",
		err1050: "玩家名已经使用",
		err1051: "错误的探险坐标",
		err1052: "舰队发送参数错误，请查询操作",
		err1053: "当前时间不能关闭假期模式",
		err1054: "您当前处于假期模式，不能进行此操作",
		err1055: "已达到星球可购买方圆最大次数",
		err1056: "24小时内星球只能迁移一次",
		err1057: "月球上不可进行生产率调节",
		err1058: "因战斗回合只有一个回合，进攻方不显示战报",
		err1059: "每天对同一玩家的攻击次数达到上限",
		err1060: "联盟名字重复",
		err1061: "您不在新手保护范围内，无法领取资源",
		err1062: "您领取的次数已经达到30次了，无法领取资源",
		err1063: "您今天的免费资源已经领取",
		err1064: "此星球有舰队活动，无法迁移",
		miss15: "探险",
		miss15desc: "将你的舰队发往银河边缘进行探索",
		miss7: "殖民",
		miss7desc: "殖民一颗新的星球",
		miss8: "废墟回收",
		miss8desc: "用回收船回收战斗废墟(金属和水晶)",
		miss3: "运输",
		miss3desc: "运输资源到其他星球",
		miss4: "部署",
		miss4desc: "将舰队部署到你的其他星球",
		miss6: "探测",
		miss6desc: "发送间谍卫星探测其他星球",
		miss5: "联合防御",
		miss5desc: "一起防御你同伴的星球",
		miss1: "进攻",
		miss1desc: "将舰队发往敌人的星球进行攻击",
		miss2: "联合攻击",
		miss2desc: "和你的同伴一起攻击敌人",
		miss9: "摧毁月球",
		miss9desc: "利用死星摧毁敌人的月球",
		m1: "金属加工厂",
		m1desc: "金属加工厂提供了星球所需的基本资源，而且被用于建造建筑物和飞船，属于帝国最资本的资源。金属是建造建筑物和制造飞船时最主要也是最基本的资源。金属矿是最容易获取的资源，只要少许能量就能开采，但是它的使用量也是最大的。矿脉都位于地底深处，同时越深越大的矿消耗的能量也最大。",
		m2: "晶体提炼厂",
		m2desc: "晶体是生产电子元件和生产合金的主要资源。相对于金属的生产过程来说，将晶体矿转换为生产用晶体所需要的能量是生产金属的两倍，也因此晶体的价格高于金属。所有的飞船和建筑物在建造时都需要用到晶体，可惜生产大多数飞船所需的晶体比较少见，并且和金属矿一样必须在地层深处才能开采到，越深的矿脉开采到的晶体矿也越多。",
		m3: "重氢分离厂",
		m3desc: "重氢，也就是重水。它的原子比普通的氢原子多一个中子，由氘－氚聚变反应（核反应）所生成的高能量来提供飞船及建筑物所需的能量。用于其分子较重的缘故，重氢可以在深海中找到，将重氢分离器升级可以增加重氢的产量。",
		m4: "太阳能发电站",
		m4desc: "为了给建筑物提供足够的能量，需要大型的太阳能发电站。太阳能发电是生产能量的一种方式，它使用了以半导体所构成的太阳能电池来进行光电转换。当升级太阳能发电站时，需要更多的空间来安置太阳能面板以提供更多的能量。可以说太阳能发电站是所有建筑的基础。",
		m12: "核电站",
		m12desc: "在核电厂的高温高压下，氢原子聚变成氦原子并释放出大量能量。消耗一个绿豆大小的重氢会产生41,32*10^-13焦耳的能量；使用1克，你可以生产172 MWh的能量。越大越复杂的原子炉会使用更多的重氢，但每小时也可以生产更多的能量。能量的效果可以通过研究能量科技来提升。",
		m14: "机器人工厂",
		m14desc: "机器人是星际时代的主要工人，他可以提供便宜且高效的劳动力用于基础建设。级别越高，建筑物建造的速度也就越快",
		m15: "纳米级机器人工厂",
		m15desc: "纳米机器人事实上是一些平均大小为纳米等级的微型机器人。这些小机器人经由程序设定及网络化以分工合作的方式来完成建筑工作，他们能带来非凡的效率。纳米机器人进行的是分子等级的工作，在生产飞船时有着无穷的妙处。将他们留在飞船的构造中，只要有足够的能量和资源，他们就可以用来进行损害控管和修复工作。",
		m21: "飞船建造基地",
		m21desc: "造船厂可以建造所有的太空船和星球防御设施。当造船厂规模扩大，它就能生产用途范围更广、速度更快的飞船。如果星球上有纳米机器人工厂，生产飞船的时间将大幅度减少。",
		m22: "金属矿仓库",
		m22desc: "这些巨大的仓库储存着挖掘出来的矿石。金属仓库越大，能储存的金属也越多。需要注意的是金属仓库如果满了，就不能再生产金属了。",
		m23: "晶体矿仓库",
		m23desc: "未加工的晶体被零时储存在巨大的仓库里。仓库越大，能储存的晶体也越多。需要注意的是晶体仓库如果满了，就不能再生产晶体了",
		m24: "重氢储藏槽",
		m24desc: "重氢储藏槽用来储存刚被分离出来的重氢。巨大的储存槽通常设置于造船厂附近，储存槽越大，能储存的重氢也就越多。需要注意的是储存槽如果满了，就不能再生产重氢。",
		m25: "隐秘保护仓",
		m25desc: "隐蔽的资源储存仓，以防万一，存储着一定量的基础资源。一个成熟的帝国应该有大量的保护仓，并且广泛的分布于帝国的各个星球，这不但是战争动员的有效物资储备，更是强大敌人劫掠后的生存物资。",
		m31: "研究实验室",
		m31desc: "为了研究新技术，必须先造一个研究实验室。实验室的等级对研究新技术的速度有决定性的作用。等级越高，新技术的研究也就越快。为了尽可能的结束研究工作，当在一个星球上展开研究时，所有的研究员都会被送到这个研究所，因此别的星球上的研究所就不能继续工作。当一个技术被研发出来后，研究员将返回母星，并且把新技术带回去。如此就可以把在一个星球上研发的技术在所有的星球上通用。",
		m33: "地形改造器",
		m33desc: "过去在开发星系里的行星时，经常遇到可用空间不足的问题。传统的建筑学和工程学无法满足更多空间的需求。一小群高能物理学家和纳米技术人员最终找到了解决办法：地形改造，使用大量的能量甚至能创造出一整块大陆。在这个建筑物里生产着特别设计的奈米机器人，以确保创造出的陆块的可用性和品质。注意：当你建造了地形改造器后，它便不能被拆除",
		m34: "联盟太空站",
		m34desc: "联盟太空站允许友好舰队停泊在轨道上空以协助防御，每提升一个等级，可允许一只舰队协助防御。联盟太空站必须达到2级才可允许新建联盟",
		m106: "空间探测技术",
		m106desc: "星球探测技术主要是研究资料感应器和智慧型装置与知识，以供探测资料并防止外来的探测器进行探测。这项技术的等级越高，就能从其他帝国的行星获得更多资料。探测器探测信息的多少，主要取决于自己和对手的探测技术的差距。自己的技术等级越高，就能获得更多资料且被发现的机率也越低。发送的探测器越多，就能回传更多讯息－但此举也大大提高了被发现的机率。",
		m108: "计算机科技",
		m108desc: "计算机技术研究用来提高计算机的计算能力。研究出更高性能更有效的控制系统。每一等级的提升都增强了运算能力和资料的平行处理能力。计算机技术的提升能指挥更多的舰队。每次出发的舰队越多，能攻击的也就越多，带回的资源也越多，当然这项技术也被商人利用，因为他能让更多的商业舰队出发.因此电脑技术应该在游戏中不断的升级。",
		m109: "武器进攻技术",
		m109desc: "武器技术研究如何让现有的武器系统产生更大的破坏力。它主要是著重于让武器能更有效的利用能量，发挥更佳的效能。 如此一来每提升一级技术，相同的武器拥有更多能量，攻击力也越强 － 每提升一级，武器攻击力在基础值增加10%。由于武器技术能让你保持和敌人之间的优势，因此你应该在游戏中持续的升级武器技术",
		m110: "能量盾防御系统",
		m110desc: "防御盾系统用来在你的船舰周围产生防护性的粒子护盾。每提升一个等级可以为防护盾增加10%的效率。等级提升增加了护盾能量总额，使它在崩溃前能够吸收更多的能量。防御盾装置不仅被使用在船舰上，在行星防御罩上也能见到它的踪影。",
		m111: "装甲技术",
		m111desc: "特殊的合金使装甲更加强大。一旦一种十分强固的合金被找到，就会被特殊的射线改变船舰壳体的分子结构从而达到合金最好的状态。装甲的效力在每升一级飞船装甲化后在基础值上升10%。",
		m113: "能量科技",
		m113desc: "能量技术致力于发展能量系统和能量储存技术的开发和研究：当技术等级提升得越高，你的能源系统便越有效率。从能量技术上获得的知识将成为研究其它特定技术的基础。",
		m114: "超空间技术",
		m114desc: "通过结合四维和五维的推进技术，可以创造出一种新的推进系统－效率更高，更节省燃料。超空间技术提供了大型战舰和空间传送点进行传送所需要的基本技术。这种崭新而复杂的技术需要昂贵的实验设备和测试用的设施。",
		m115: "燃烧引擎科技",
		m115desc: "基于反作用原理，燃烧引擎是最古老的引擎类型。高温的粒子被高速的甩出飞船并以此来推动飞船向反方向前进。燃烧引擎效率低下，但是因为它便宜，容易操作，体积小的原因，适合于小型船舰，操作过程中也不需要耗费太多的电脑系统资源。每提升一个等级可以在基础值上增加10%的速度：小型和大型运输舰，轻型战舰，回收舰和探测器。",
		m117: "脉冲引擎科技",
		m117desc: "脉冲引擎基于反作用力的原理而设计。此种推进系统所用的燃料是核融合炉生产能量后产生的垃圾。与简单的燃烧引擎比较之下，脉冲引擎更为先进，可以用较少的燃料消耗量获得较高的速度。每升一级提高速度20%。",
		m118: "超空间引擎技术",
		m118desc: "通过对时间和空间的弯曲从而使船舰周围的空间进行压缩，从而使飞行的距离减少。这项技术水平越高，空间压缩的也越剧烈，从而达到提高速度的目的。每升一级提高速度30％需求: 超空间技术（等级3）研究实验室 （等级7）。",
		m120: "激光科技",
		m120desc: "激光是高能量的光子束,具有指向性和绝佳的聚焦性质。激光装置的用途很广泛：从导航陀螺仪，光学电脑或武器系统，雷射技术对每个帝国来说都是基础知识。需求：研究实验室（等级1）能量技术（等级2）",
		m121: "中子科技",
		m121desc: "中子武器技术基于将高加速的中子光束投射在目标上，依靠目标物带电荷的本质，可以造成巨大的伤害。中子光束比激光优秀，但需要更多的研究费用。虽然与其他技术相较之下较为简易，在大多数的星球上，被运用到的机会并不大。",
		m122: "等离子科技",
		m122desc: "由于等离子不友善的性质，等离子武器比任何已知的武器系统都要来得危险。等离子是物质四态的其中之一（固态, 液态, 气态, 等离子[电浆态]），是由带正电荷和带负电荷的离子所组成的流体。只要输入的能量足够，原本为电中性的气体会分离成为各带有正负电荷的离子和电子。利用磁力技术，这些带电的粒子被包裹成“球状”以便发射。",
		m123: "跨星系科研网络",
		m123desc: "你的星球上的科学家可以经由网络互相通信。每提升一个等级，网络会自动将未连线的研究实验室加入网路中。在连线建立后，它们的等级会相加。每个连结中的研究实验室都需要有相应的等级以加入研究。只要等级足够，研究实验室会各自分担工作，效率就像它们被相加一样。",
		m124: "天体物理科技",
		m124desc: "我们在天体物理学领域的进一步发展，允许研究实验室被安装在越来越多的船只上。这使得我们可以涉足于探索深层外太空的更深入研究。这些进展可以使用在宇宙拓展更多的殖民地。每2级该科技，可提供一个额外的行星殖民可能性。",
		m199: "引力科技",
		m199desc: "重力子是产生重力的基本微粒。它是自己的反粒子，没有质量，不带电荷，自旋数为2。通过发射密集的重力微粒，人工的重力场被制造出来，其能量和吸引力不只可以摧毁船舰，甚至是月球。为了产生足够的重力微粒，需要大量的能量。需求：研究实验室（等级12）",
		m202: "小型运输舰",
		m202desc: "小型运输舰的大小和战斗机差不多，但是它们没有高效率的引擎和军用装备，而是把空间挪出来做为货仓。小型运输舰可以装载5000单位的资源。大型运输舰的搭载量是它的五倍，装甲，防护盾和引擎也都有提升。由于火力薄弱，运输舰需要其他的船舰护航。当脉冲引擎研发到5级时，小型运输舰将会换装此型引擎，并增加速度。",
		m203: "大型运输舰",
		m203desc: "由于它的空间都被拿来作为货仓，无法搭载高等级的武器系统和其他科技，这类船舰不应该单独行动。使用高效的燃料引擎，它成为快速的资源后勤单位，在星球之间穿梭。当然它也伴随着舰队攻击敌方星球，从而能掠夺更多的资源。",
		m204: "轻型战斗机",
		m204desc: "与它薄弱的装甲和火力相比，轻型战斗机在战争中扮演着一种支援性的角色。凭着它们的灵活度，速度以及数量，轻型战斗机常被用来保护那些较大而笨重的船舰。",
		m205: "重型战斗机",
		m205desc: "在轻型战斗机的改进研究中，研究人员发现用传统的推动技术已经不能满足要求。为了提供新型的战斗机更好的灵活度，脉冲引擎第一次被使用。使用了高价值的材料，虽然提高了费用和复杂度，却也提供更多的可能性。使用脉冲引擎，可以提供武器和防护盾系统更多的能量。强化过的机身结构和更强悍的火力，使得这种战斗机比它的前辈更有威胁性。",
		m206: "巡洋舰",
		m206desc: "随着重型激光炮和离子加农炮被运用在战场上，战斗机陷入了一个困境。在这些新型的防御系统前，无论怎么提升武器强度和装甲，战斗机依旧无法与其对抗。 因此人们决定发展一种新的船舰，它要有更高的火力和防护。巡洋舰就此诞生了。战斗巡洋舰的装甲大约是重型战斗机的3倍，火力强2倍。它的速度也是所有船舰中最快的。对于中度的防御没有比他更好的武器了。巡洋舰几乎统治了整个宇宙有100年。不幸的是，随着高斯加农炮和等离子发射器等新型防御设施被开发出来,战斗巡洋舰结束了它的辉煌历史。由于武器系统效能适合，现在巡洋舰仍被用来对抗大量的战斗机中队。",
		m207: "战列舰",
		m207desc: "战列舰是舰队的脊梁。它的重型防护，高速，超大的装载空间使得这种船舰被公认为是最优秀的船舰。巨大的货物仓也使得战列舰适于进行掠夺任务。",
		m208: "殖民船",
		m208desc: "殖民船是特殊设计过的船只，拥有厚重的装甲，允许帝国开拓并殖民到新天地。它将用来对新的星球资源的提供，能整个被分拆然后被重新利用，以建造一个全新的世界。",
		m209: "回收船",
		m209desc: "太空战斗的规模越来越庞大，在单一次战斗中总有着成千上万的船舰被摧毁，产生的船舰残骸却白白被放弃。普通的运输舰无法收集这些珍贵的资源，甚至于无法接近。通过防护技术的发展，产生了一个新的舰艇种类，有了它的帮助能把巨大的流失的资源回收。 回收船的大小与大型运输舰相仿，但额外搭载的防护装备占据了一些可用空间。因此，回收船的可用储存空间被限制为20,000。",
		m210: "间谍卫星",
		m210desc: "小巧灵活的探测器，搭载高效能的推进机构，它能够提供遥远的星球上的信息。使用先进的通讯系统，这些探测器可以从极为遥远的地方回传搜集到的情报，在抵达目标行星的绕地轨道后，探测器会运行轨道一周以搜集情报，此时它们很容易被发现。为了节省空间缩小体积，防护盾和武器被放弃了。只要一被发现，探测器通常会因为薄弱的结构而被摧毁。",
		m211: "轰炸机",
		m211desc: "轰炸机专门用来摧毁星球上的重型防御装置。拜激光引导系统之赐，等离子炸弹被精确的投掷到它们的目标上，对行星的防御系统造成毁灭性的伤害。当超空间引擎提升到等级8时，轰炸机将可以换装成该型引擎并且提升速度。",
		m212: "太阳能卫星",
		m212desc: "太阳能卫星装备了太阳能电池，是构造简单的轨道卫星，它会把搜集到的能量传回到星球的地表上。这些能量使用特殊的雷射光来传输。太阳能卫星的效率取决于太阳光线的强弱。它的价格低廉，安装简单，这些卫星因为提供了地面建筑所需的电力而广为人知。不幸的是，这些卫星在战斗时极易被摧毁。",
		m213: "毁灭者",
		m213desc: "毁灭者是战斗船舰中的王者。由离子-等离子及高斯加农炮构筑而成的多重武器方阵搭载在能快速反应的炮台上，使它击中战机的机率高达99%。因为毁灭者巨大的体积限制了活动能力，使得它跟战斗舰艇比较起来更像是移动式的堡垒。由于火力惊人，它所消耗的重氢也同样巨大。",
		m214: "死星",
		m214desc: "死星装备了一门巨大的重力粒子炮，只需要一击就能够摧毁几乎任何东西，甚至是月球。它需要无比巨大的能量，以致于它几乎是由能量产生器组成的。死星的大小限制了它的航行速度，使得它无比缓慢。有些时候，其他舰船会被要求在死星后面推它一把。只有强大且先进的星际帝国才有足够的人力，资源与知识去建造这种几乎有月球大小的太空船。",
		m215: "战斗巡洋舰",
		m215desc: "这艘战舰是有史以来研发出的最先进战舰之一，对敌方来袭的舰队来说简直就是死亡舰艇。甲板上增强型的激光加农炮以及先进的超空间引擎，战斗巡洋舰相对任何攻击来说它是一种超强武力。由于该战舰的设计以及它的强大的武器系统，使得货舱空间被严重压缩，但这也同时令它拥有较低的燃油消耗。",
		m401: "火箭发射器",
		m401desc: "火箭发射器是一种造价低廉，构造简单的防御系统。源自简单的弹道武器，它不需要特别的研究就可以建造。低廉的造价让它适于对抗小型舰队，但是随著时间的消逝它也慢慢失去了作用。在后期它只能扮演为更强大的防御系统拦截火力的角色。一般来说，防御工事在系统状况接近崩溃时会自动关闭，以便有修复的机会。在战斗结束后,被摧毁的防御设施有70%的机会被修好。",
		m402: "轻型激光发射器",
		m402desc: "为了对抗在造船技术领域的巨大进步，科学家必须发展出一种新的防御装置，以便对抗装备完善的船舰和舰队。很快轻型激光炮诞生了, 通过光子集中射击能造成比弹道武器更大的伤害。另一方面，它的防护能力也被提升以对抗现代船舰的火力。为了不让生产成本大幅上升，它的基本结构和火箭发射装置相比没什么太大的不同。因为它的性能价格比极高，从刚起步的帝国到强大的星际帝国，到处都能见到它的身影。注意在战斗之后，有多达70 ％的机会修复受损的防御设施。",
		m403: "重型激光发射平台",
		m403desc: "重型激光炮是轻型激光炮必然的发展结果，它的结构被加强了。由于加入了新的材料，它的外壳被改造得具有了真正的抵抗力。同时它的能量系统和射控电脑也被改进，能在一个目标上释放更多的能量，造成更大的伤害。注意在战斗之后，有多达70 ％的机会修复受损的防御设施。",
		m404: "高斯炮",
		m404desc: "和先进的核聚变技术，新型能量来源，超空间技术和进步的合金治炼技术相比，投射武器简直就是快报废的老古董。但也因为能量技术的进步，让它找回自己在新世纪中的定位：它的原理早在20和21世纪就被熟知：粒子加速。高斯炮就是一座大型的粒子加速器，成吨重的炮弹被巨大的电磁场加速，这些炮弹的出膛速度是如此之高，它燃尽了周遭空气中的尘埃，后座力撼动大地。它的破坏力足以击穿任何现代的装甲，防护盾被击穿也不是少数例子。有时甚至能把目标直接打个对穿。",
		m405: "中子炮",
		m405desc: "这种技术在21世纪时就已存在，当时称为EMP，也就是电磁脉冲。它有一个特性，脉冲能量会造成瞬间的突波，对电子设备造成严重的干扰，并把那些灵敏的电子设备摧毁。往日这类武器被搭载在炸弹或是火箭飞弹上，但随着EMP领域研究发展的结果，现在这类武器可以被很简单地改装成火炮。中子炮是这类武器中的佼佼者。密集的中子束可以破坏目标上任何未加防护的电子系统，并使得船舰上的防护盾产生器不稳定，并不会造成实质上的伤害。各式舰艇中只有巡洋舰搭载了中子炮，因为中子炮的能量消耗非常的巨大，在战斗中通常都是直接毁灭目标船舰，而不是瘫痪它的行动能力。",
		m406: "等离子武器",
		m406desc: "激光技术目前已经趋向完美，离子技术也将到达它的终点站，这些现存的武器系统似乎再也没有改进的余地。但是人们想到了一个主意：也就是把两种系统合而为一。激光被用来把重氢加热到百万度的高温，再利用研发离子技术所获得的电磁场知识，来包裹这团可怕的等离子团。这青蓝色的等离子球在飞往目标的途中看起来是如此的赏心悦目，但是在太空船上的船员看来，这看来温和的等离子团代表的是毁灭与死亡。等离子武器被看作是最可怕的武器，当然这项技术的代价也是高昂的。",
		m407: "小型能量防御罩",
		m407desc: "在防护盾发生器足够小到能装备到飞船上以前，早就存在一种在星球表面装备的大型的防护盾发生器。它把整个星球都罩了起来，并产生出一种力场，能在能量爆发以前把它们大量的吸收。小型的舰队常常对这种小型防护罩束手无策。随着技术上的不断发展，防护盾也被不断的强化。在后期人们还能将造大型的防护罩，它更加的强大。每种防护罩，在星球上只能各设置一个。在战斗结束后,被摧毁的防御设施有70%的机会被修好。",
		m408: "大型能量防御罩",
		m408desc: "小型防护罩的改进。它们使用相同的技术，但大型防护罩却可以抵挡多得多的进攻能量。大型防护罩的力场产生器在运转时也比较安静。在战斗结束后,被摧毁的防御设施有70%的机会被修好。",
		m41: "月球卫星基地",
		m41desc: "由于月球上没有大气，所以要移民月球必须先造一个月球基地。基地提供必要的空气，重力和温度。基地的等级越高，提供生存必需的面积也就越大。 月球基地每升一级，能覆盖的面积增加3方圆直到覆盖整个月球为止。 月球基地自己也占一个方圆的面积只要你建造了月球基地后它就不能被拆除。",
		m42: "空间感应阵",
		m42desc: "高解析度的感应阵列被用来扫瞄巨量的频谱。高性能电脑组合空间波动的微小变化，能感应到在遥远星系的舰队的运动情况。由于系统相当复杂，每次扫瞄都需要大量(5000)重氢以提供所需能量。",
		m43: "空间传送门",
		m43desc: "空间传送门是巨大的传输工具，能够使庞大的舰队瞬间穿越星系。空间传送门运用了近似虫洞的科技来实现跳跃，不需要重氢，但是传送门在两次跳跃之间需要一个小时的充电时间。不能通过传送门运送资源。",
		darkmatterdesc: "暗物質是一種透過長年累月一系列努力之下,現在能被存儲起來物質.它能產生不可思議的高純能源.獲得暗物質的方式是極其複雜的,而且在獲取途中也充滿了危險,因而使得暗物質價值連城.只有透過購買的暗物質仍有剩餘時,才能令您的帳號受到保護而不被刪除!",
		darkmattereffect: "暗物質可用於僱用事務官和指揮官,以及用來與商人交易,行星遷移以及物品購買等.",
		officertips: "有了事务官们的鼎力协助,您就可以领导您的帝国迈向一个之前您梦寐以求的强大国度!您所需要做的就是获取一些暗物质,有了暗物质的奖励,您的工人及顾问们将更加卖力工作.",
		officer1: "指挥官",
		officer1desc: "指挥官的职位是随着现代战争而建立的。因为简化的命令构架，命令能更快的处理。由此，你可以得到你的整个帝国的轮廓！也由此，你能一直比你的敌人更快一步的发展。",
		officer1effect: "建筑列队,减少10%建筑物建造时",
		officer2: "舰队指挥官",
		officer2desc: "舰队指挥官是一位老练的退役军人和老练的战略家。在艰难的战役中，他能创造整体优势以及联络他的副舰队指挥官。在战斗中，高明的君主仰赖他的能力，并且能在战斗中指挥更多数量的舰队。",
		officer2effect: "舰队航线+2, 减少10%防御,舰船建造时间",
		officer3: "工程師",
		officer3desc: "工程师是能源管理方面的专家。在和平的时候他能增加帝国整体的能源。在遭受到攻击的时候，他将提供足够的能源给大炮，避免过载，并且降低在战斗中的损失。",
		officer3effect: "战斗中的防御损失减半, 增加10%能量产量",
		officer4: "地质学者",
		officer4desc: "地质学者是太空矿物学及结晶学的专家。他在化学以及冶金方面协助他的团队并且改善了星际间的通讯以及将帝国内的矿物做更有效的提炼运用。地质学者可以增加10%的金属,晶体,重氢产量。",
		officer4effect: "金属 晶体 重氢 产量增加10%",
		officer5: "技术专家",
		officer5desc: "技术专家公会是由许多天才科学家组成的，你会发现他们总是想尽办法突破现代科学技术的瓶颈。我们鼓励科学家留在我们的帝国进行研究，研究一般人不会想去破解的科技技术。",
		officer5effect: "探测等级+2, 减少25%研究时间",
		cost1: "增加当前星球方圆10个单位",
		cost2: "提前完成建造或研究",
		cost3: "请选择购买资源的数量",
		cost4: "请选择购买联盟点数的数量",
		tutorial1title: "基本供应",
		tutorial2title: "行星防御",
		tutorial3title: "行星供应",
		tutorial4title: "第一艘飞船",
		tutorial5title: "联盟交友",
		tutorial6title: "使用暗物质",
		tutorial7title: "舰队行为",
		tutorial8title: "外太空",
		tutorial9title: "扩张您的帝国",
		tutorial10title: "废墟回收",
		tutorial1reward: "任务奖励: 2000 金属 / 1000 水晶",
		tutorial2reward: "任务奖励: 火箭发射器 +2",
		tutorial3reward: "任务奖励: 5000 金属 / 2000 晶体",
		tutorial4reward: "任务奖励: 1000 重氢",
		tutorial5reward: "任务奖励: 暗物质500（下一步教学将会用到）",
		tutorial6reward: "任务奖励: 金属仓库等级+1",
		tutorial7reward: "任务奖励: 间谍卫星 + 3",
		tutorial8reward: "任务奖励: 重型战斗机2艘，小型运输船5艘。",
		tutorial9reward: "任务奖励: 3天的指挥官",
		tutorial10reward: "任务奖励: 回收船 +2",
		tutorial1desc: "为了扩大你的星球，首先，将需要足够的资源，你可以通过矿场来生产，升级 金属加工厂 和 晶体提炼厂 可以确保你的资源供应，请注意，这些矿场的工作需要一些能量，使用 太阳能发电站 可以产生能量。",
		tutorial2desc: "为了保证你的资源不被敌人掠夺，你应该考虑一下早点建设防御设施。比方说，你可以浏览火箭发射器的科技树，看看你需要什么前提来建造它。你需要重氢来发展你的防御设施。因此你首先要建立起这种资源的基本供给。",
		tutorial3desc: "当基本供应建立好后，你应当巩固它们。要保证充足的能量供应。",
		tutorial4desc: "和火箭发射器一样，飞船也能在敌人的攻击中保护你。它们的优点就是能使你变得更为主动。然而，建设飞船和更为先进的防御前，你必须先研究一些科技。你将要建造一座研究实验室来进行研究。",
		tutorial5desc: "在这个宇宙中你并不是孤独的！信息-交流网络是非常重要的。与其他人沟通可以使你更容易地找到贸易伙伴并且得到其他玩家的帮助。许多玩家加入或建立联盟，将大家组织到一起，使他们能够更容易地共同达成目标。",
		tutorial6desc: "通过商人，你可以以更高的价格通过资源系统中已被设置好的汇率换取其他资源。最大交易额取决于你想要出售资源的数量和仓库的空间。",
		tutorial7desc: "另一种获取资源的方式就是掠夺其他人的星球。然而，你要当心有些星球上有着很好的防御。要得到敌人星球的信息，你可以探测它。",
		tutorial8desc: "宇宙是一个无尽的空间海洋。一次又一次，研究人员尝试着去探索未知的地域并且遭遇敌情，碰见未知生物或者获得资源。一个像你一样倍受尊敬的君王应该同样毫不吝啬地送出勇士进行探险。简单的间谍卫星不会使你停留在一个有效的距离并且传回错误的数据。",
		tutorial9desc: "一个君王总是焦急地想扩张他的帝国。扩张的前提已经在你的母星建立起来了，但是某一时刻，你的帝国可以进行完全地扩张。尽早开发新的星球，可以得到更多的资源和更多的建筑空间。通过星球间流畅的交通，你可以在敌人攻击的时候保护星球上的资源。",
		tutorial10desc: "经过星球轨道上的激战，金属和晶体的残留物会从被摧毁的飞船上脱离下来形成废墟。回收废墟提供给你了一个新的获取资源的途径。",
		tutorial1task1: "将金属加工厂升级到4级",
		tutorial1task2: "将晶体提炼厂升级到2级",
		tutorial1task3: "将太阳能发电站升级到4级",
		tutorial2task1: "将重氢分离厂升级到2级",
		tutorial2task2: "建造2级机器人工厂",
		tutorial2task3: "建造1级飞船建造基地厂",
		tutorial2task4: "建造一个火箭发射器",
		tutorial3task1: "将金属加工厂升级到10级",
		tutorial3task2: "将晶体提炼厂升级到7级",
		tutorial3task3: "将重氢分离厂升级到5级",
		tutorial4task1: "建造1级研究实验室",
		tutorial4task2: "研究燃烧引擎到2级",
		tutorial4task3: "建造一艘小型运输船",
		tutorial5task1: "重命名一个星球",
		tutorial5task2: "分享宇宙帝国到您的新浪微博 <a href='/weibo/auth.php' class='g1' target='_blank'>点这里分享</a>",
		tutorial5task3: "加入一个多于3人的联盟",
		tutorial6task1: "建立任意一种资源的仓库到第二级",
		tutorial6task2: "购买一次资源（消耗一些暗物质）",
		tutorial7task1: "建造一个间谍卫星",
		tutorial7task2: "探测任意玩家的星球",
		tutorial8task1: "进行一次探险",
		tutorial9task1: "建立一个殖民星",
		tutorial10task1: "回收一处废墟",
		end: "结束"
	},
	function() {
		var d = window.SNS,
			l = document,
			u = d.lang;

		function c(e, t, n) {
			var i = "";
			return 2 === n && (i += "<div class='moon-small-icon'></div>"), (i += e + "&nbsp;") + "<span class='link' actid='36' position='" + t + "'>[" + t + "]</span>"
		}
		d.util = {}, utl = d.util, utl.localize = function() {
			for (var e = ["friends", "highscore", "setup", "search", "logout", "overview", "station", "research", "shipyard", "defense", "fleet", "galaxy", "alliance", "officer", "diameter", "temperature", "fleet-prev-btn", "coordinate", "points", "box-notify-title", "box-notify-yes", "box-notify-no", "box-notify-ok", "box-title-building", "box-title-research", "box-title-ship", "building-info-downgrade", "galaxy-title-planet", "galaxy-title-name", "galaxy-title-moon", "galaxy-title-debris", "galaxy-title-player", "galaxy-title-alliance", "galaxy-title-action", "fleet-next-btn", "fleet-step-nav1", "fleet-step-nav2", "fleet-step-nav3", "officer-info-free-darkmatter"], t = e.length, n = 0; n < t; n++) {
				var i = l.getElementById(e[n]),
					s = i.innerHTML.replace(/(^\s*)|(\s*$)/g, "")
					.replace(/ /gi, "_");
				i.innerHTML = u[s]
			}
			l.title += " v" + d.version, l.getElementById("message")
				.setAttribute("tips", u.message), l.getElementById("tutorial")
				.setAttribute("tips", u.tutorial)
		}, utl.loadingComplete = function() {
			l.getElementById("mask")
				.className = "hidden", l.getElementById("box-notify")
				.className = "hidden"
		}, utl.newPlayerPage = function() {
			var e = location.href.replace("game.php", "newplayer.php");
			location.href = e
		}, utl.enterPage = function() {
			var e = location.href.replace("game.php", "enter.php");
			location.href = e
		}, utl.menuDivChange = function(e) {
			var t = d.flags.menuLastId;
			if (e.id !== t) {
				var n = "overview station research shipyard defense fleet galaxy alliance officer"; - 1 < n.indexOf(e.id) && (e.className = "menu-button selected"), -1 < n.indexOf(t) && (l.getElementById(t)
						.className = "menu-button"), l.getElementById("content-" + t)
					.style.display = "none", l.getElementById("content-" + e.id)
					.style.display = "block", d.flags.menuLastId = e.id, d.hideBuildingInfo()
			}
		}, utl.numberFormat = function(e) {
			if (1e6 <= e) {
				var t = Math.floor(e / 1e3);
				return (t /= 1e3) + "M"
			}
			return this.addCommas(e)
		}, utl.addCommas = function(e) {
			var t = (e += "")
				.split(".");
			x1 = t[0], x2 = 1 < t.length ? "." + t[1] : "";
			for (var n = /(\d+)(\d{3})/; n.test(x1);) x1 = x1.replace(n, "$1,$2");
			return x1 + x2
		}, utl.dateFormat = function(e) {
			return e
		}, utl.timeFormat = function(e) {
			return e
		}, utl.numberCheck = function(e) {
			return !(!e || "" === e) && !!/^\d+(\.\d+)?$/.test(e)
		}, utl.getOptionHtml = function(e) {
			for (var t = "", n = 10; 0 <= n; n--) t += "<option " + (n === e ? "selected" : "") + " value='" + n + "'>" + (0 === n ? 0 : n + "0") + "%</option>";
			return t
		}, utl.getResourceClass = function(e, t) {
			return t <= e ? "overmark" : .8 * t <= e ? "middlemark" : ""
		}, utl.fontAnimation = function() {
			$(".resource-changed")
				.each(function(e, t) {
					setTimeout(function() {
						var e;
						e = t, move(e)
							.set("font-size", "20px")
							.duration("0.2s")
							.then(function() {
								move(e)
									.set("font-size", "12px")
									.duration("0.2s")
									.end()
							})
							.end()
					}, 500 * Math.random())
				})
		}, utl.getBuildCostItem = function(e) {
			var t = "";
			return 0 < e.metal && (t += "<div actid='106' class='resource-item " + (e.metal > d.planet.metal ? "overmark hand" : "") + "'><img src='img/metal.gif' />" + this.numberFormat(e.metal) + "</div>"), 0 < e.crystal && (t += "<div actid='106' class='resource-item " + (e.crystal > d.planet.crystal ? "overmark hand" : "") + "'><img src='img/crystal.gif' />" + this.numberFormat(e.crystal) + "</div>"), 0 < e.deuterium && (t += "<div actid='106' class='resource-item " + (e.deuterium > d.planet.deuterium ? "overmark hand" : "") + "'><img src='img/deuterium.gif' />" + this.numberFormat(e.deuterium) + "</div>"), 0 < e.energy && (t += "<div class='resource-item " + (e.energy > d.planet.energy ? "overmark hand" : "") + "'><img src='img/energy.gif' />" + e.energy + "</div>"), e.buildcount && (t += "<div class='resource-item'><input type='text' id='build-count' class='cost-count' />" + u.count + "</div>"), t
		}, utl.initBuildingDom = function(e) {
			var t = "";
			for (var n in e.building) d.building[n].precount = 0, d.building[n].buildable = !0, t += "<div class='building-div'><div id='building-fast-" + n + "' actid='111' bid='" + n + "' class='building-fast-build'></div><div id='building-mask-" + n + "' actid='12' bid='" + n + "' tips='" + u["m" + n] + "' class='building-mask'></div><div class='building-upgrade' id='building-upgrade-" + n + "'></div><div class='building-timer' id='building-timer-" + n + "'></div><img class='building-img-not-selected' id='building-img-" + n + "' bid='" + n + "' tips='" + u["m" + n] + "' actid='12' width='86px' height='86px' src='img/building/" + n + ".gif' /><div class='building-count' id='building-count-" + n + "'>" + e.building[n] + "</div></div>";
			for (var n in l.getElementById("station-div")
				.innerHTML = t, t = "", e.tech) d.building[n].precount = 0, d.building[n].buildable = !0, t += "<div class='building-div'><div id='building-fast-" + n + "' actid='111' bid='" + n + "' class='building-fast-build'></div><div id='building-mask-" + n + "' actid='12' bid='" + n + "' tips='" + u["m" + n] + "' class='building-mask'></div><div class='building-upgrade' id='building-upgrade-" + n + "'></div><div class='building-timer' id='building-timer-" + n + "'></div><img class='building-img-not-selected' id='building-img-" + n + "' bid='" + n + "' tips='" + u["m" + n] + "' actid='12' width='86px' height='86px' src='img/building/" + n + ".gif' /><div class='building-count' id='building-count-" + n + "'>" + e.tech[n] + "</div></div>";
			for (var n in l.getElementById("research-div")
				.innerHTML = t, t = "", d.planet.ship) d.building[n].precount = 0, d.building[n].buildable = !0, t += "<div class='building-div'><div id='building-mask-" + n + "' actid='12' bid='" + n + "' tips='" + u["m" + n] + "' class='building-mask'></div><div class='building-upgrade' id='building-upgrade-" + n + "'></div><div class='building-timer' id='building-timer-" + n + "'></div><img class='building-img-not-selected' id='building-img-" + n + "' bid='" + n + "' tips='" + u["m" + n] + "' actid='12' width='86px' height='86px' src='img/building/" + n + ".gif' /><div class='building-count' id='building-count-" + n + "'>" + e.ship[n] + "</div></div>";
			for (var n in l.getElementById("shipyard-div")
				.innerHTML = t, t = "", d.planet.defense) d.building[n].precount = 0, d.building[n].buildable = !0, t += "<div class='building-div'><div id='building-mask-" + n + "' actid='12' bid='" + n + "' tips='" + u["m" + n] + "' class='building-mask'></div><div class='building-upgrade' id='building-upgrade-" + n + "'></div><div class='building-timer' id='building-timer-" + n + "'></div><img class='building-img-not-selected' id='building-img-" + n + "' bid='" + n + "' tips='" + u["m" + n] + "' actid='12' width='86px' height='86px' src='img/building/" + n + ".gif' /><div class='building-count' id='building-count-" + n + "'>" + e.defense[n] + "</div></div>";
			l.getElementById("defense-div")
				.innerHTML = t
		}, utl.template = function(e, t) {
			if (void 0 === d.template[e]) {
				var n = l.getElementById("template-" + e);
				d.template[e] = function(e) {
						var t = doT.template(n.innerHTML);
						l.getElementById(n.getAttribute("to"))
							.innerHTML = t(e)
					}, $(n)
					.remove()
			}
			d.template[e](t)
		}, utl.objIsEmpty = function(e) {
			for (var t in e) return !1;
			return !0
		}, utl.getFirstKey = function(e) {
			for (var t in e) return t;
			return !1
		}, utl.showFloatLayer = function(e, t) {
			d.flags.floatDivShow = !0, l.getElementById("float-title")
				.innerHTML = e, l.getElementById("float")
				.className = t, l.getElementById("mask")
				.className = ""
		}, utl.hideFloatLayer = function() {
			l.getElementById("float")
				.className = "hidden", l.getElementById("mask")
				.className = "hidden", l.getElementById("float-content")
				.innerHTML = "", d.flags.floatDivShow = !1;
			var e = d.flags.floatCountdownIds;
			if (0 < e.length) {
				for (var t = 0; t < e.length; t++) {
					var n = e[t];
					d.countdown.instance[n] && (void 0 !== d.countdown.instance[n].dom && d.countdown.instance[n].clear(), delete d.countdown.instance[n])
				}
				e.length = 0
			}
		}, utl.showGalaxy = function() {
			return d.flags.templateLoaded.galaxy || (d.util.template("galaxy", {
				lang: u
			}), d.flags.templateLoaded.galaxy = !0, delete d.template.galaxy), {
				mod: "galaxy",
				xid: 0,
				galaxy: d.flags.galaxyGalaxy,
				system: d.flags.galaxySystem
			}
		}, utl.getShipCount = function(e) {
			var t = {
					count: 0
				},
				n = d.planet.ship;
			for (var i in n)
				if (212 != i) {
					var s = l.getElementById(e + "-count-" + i)
						.value;
					"" !== s && this.numberCheck(s) && 0 < (s = parseInt(s)) && (t[i] = s, t.count += s)
				} return t
		}, utl.shipToStr = function(e) {
			var t = [];
			for (var n in e) "count" != n && t.push(n + ":" + e[n]);
			return t.join("|")
		}, utl.getFleetStr = function(e) {
			var t = [];
			for (var n in e) "count" != n && t.push(u["m" + n] + ": <span class='undermark'>" + e[n] + "</span>");
			return t.join("<br />")
		}, utl.checkGalaxy = function(e) {
			return !!(this.numberCheck(e) && 0 < e && e <= d.config.galaxyMax)
		}, utl.checkSystem = function(e) {
			return !!(this.numberCheck(e) && 0 < e && e <= d.config.systemMax)
		}, utl.checkPlanet = function(e) {
			return !!(this.numberCheck(e) && 0 < e && e <= 15)
		}, utl.checkExpPlanet = function(e) {
			return 16 == e
		}, utl.setTargetType = function(e) {
			1 == e ? (l.getElementById("fleet-step2-target-planet")
					.className = "planet-selected", l.getElementById("fleet-step2-target-moon")
					.className = "moon", l.getElementById("fleet-step2-target-debris")
					.className = "debris") : 2 == e ? (l.getElementById("fleet-step2-target-planet")
					.className = "planet", l.getElementById("fleet-step2-target-moon")
					.className = "moon-selected", l.getElementById("fleet-step2-target-debris")
					.className = "debris") : (l.getElementById("fleet-step2-target-planet")
					.className = "planet", l.getElementById("fleet-step2-target-moon")
					.className = "moon", l.getElementById("fleet-step2-target-debris")
					.className = "debris-selected"), d.flags.fleetMission.targetType = e, l.getElementById("fleet-step2-target")
				.innerHTML = e <= 1 ? u.planet : "2" === e ? u.moon : u.debris
		}, utl.updateTargetInfo = function() {
			var e = l.getElementById("fleet-shortcut")
				.value;
			if ("" !== e) {
				var t = e.split(":");
				l.getElementById("fleet-target-galaxy")
					.value = t[0], l.getElementById("fleet-target-system")
					.value = t[1], l.getElementById("fleet-target-planet")
					.value = t[2], this.setTargetType(t[3]), this.updateFleetInfo()
			}
			var n = l.getElementById("fleet-combatunit")
				.value;
			"" !== n ? (t = n.split(":"), l.getElementById("fleet-target-galaxy")
				.value = t[0], l.getElementById("fleet-target-system")
				.value = t[1], l.getElementById("fleet-target-planet")
				.value = t[2], this.setTargetType(t[3]), d.flags.fleetMission.attackCode = t[4], this.updateFleetInfo()) : d.flags.fleetMission.attackCode = ""
		}, utl.updateFleetInfo = function() {
			var e = l.getElementById("fleet-target-galaxy"),
				t = l.getElementById("fleet-target-system"),
				n = l.getElementById("fleet-target-planet"),
				i = e.value,
				s = t.value,
				r = n.value;
			this.checkGalaxy(i) || (i = e.value = 1), this.checkSystem(s) || (s = t.value = 1), this.checkPlanet(r) || this.checkExpPlanet(r) || (r = n.value = 1), d.flags.fleetMission.targetPosition = [i, s, r];
			var a = l.getElementById("speed-rate")
				.value;
			d.flags.fleetMission.speedRate = a, d.sendNow({
				mod: "fleet",
				xid: 1,
				target_galaxy: i,
				target_system: s,
				target_planet: r,
				target_type: d.flags.fleetMission.targetType,
				fleets: this.shipToStr(d.flags.fleetMission.ships),
				speed: a,
				attack_code: d.flags.fleetMission.attackCode
			})
		}, utl.setMissionIcon = function(e, t) {
			for (var n = [15, 7, 8, 3, 4, 6, 5, 1, 2, 9], i = -1 < ("," + t.toString() + ",")
				.indexOf("," + e + ","), s = 0; s < 10; s++) n[s] == e && i ? l.getElementById("mission-" + n[s])
				.className = "mission-" + n[s] + "-slt" : -1 < ("," + t.toString() + ",")
				.indexOf("," + n[s] + ",") ? l.getElementById("mission-" + n[s])
				.className = "mission-" + n[s] + "-on" : l.getElementById("mission-" + n[s])
				.className = "mission-" + n[s] + "-off";
			0 === (d.flags.fleetMission.mission = e) ? l.getElementById("fleet-mission")
				.innerHTML = u.fleetmiss : (l.getElementById("fleet-mission")
					.innerHTML = u["miss" + e], l.getElementById("fleet-step3-staytime")
					.style.display = 5 == e || 15 == e ? "block" : "none")
		}, utl.updateResourceLoad = function() {
			for (var e = ["metal", "crystal", "deuterium"], t = 0, n = d.flags.fleetMission, i = 0; i < 3; i++) {
				var s = l.getElementById("fleet-resource-" + e[i])
					.value;
				this.numberCheck(s) || (s = 0, l.getElementById("fleet-resource-" + e[i])
					.value = 0), s = parseInt(s, 10), t += n[e[i]] = s
			}
			l.getElementById("fleet-resource-status")
				.innerHTML = "<span class='" + (n.storage >= t ? "undermark" : "overmark") + "'>" + t + "</span> / " + n.storage
		}, utl.setFleetNav = function(e) {
			l.getElementById("fleet-step-nav1")
				.className = 1 == e ? "on" : "", l.getElementById("fleet-step-nav2")
				.className = 2 == e ? "on" : "", l.getElementById("fleet-step-nav3")
				.className = 3 == e ? "on" : ""
		}, utl.resetMission = function() {
			l.getElementById("fleet-resource-metal")
				.value = "", l.getElementById("fleet-resource-crystal")
				.value = "", l.getElementById("fleet-resource-deuterium")
				.value = "", $("#fleet-step1 input.fleet-item-value")
				.val(""), d.flags.fleetMission = {
					ships: {},
					step: 1,
					targetPid: 0,
					targetPosition: [0, 0, 0],
					targetName: "",
					targetType: 1,
					mission: 0,
					missions: [],
					speedRate: 10,
					stayTime: 0,
					metal: 0,
					crystal: 0,
					deuterium: 0,
					storage: 0,
					time: "",
					consume: 0,
					showStay: !1,
					attackCode: ""
				}
		}, utl.getRequireData = function(e) {
			if (this.objIsEmpty(e)) return u.str131;
			var t = "";
			for (var n in e) t += "<div class='building-div'>", t += "<img class='building-img-not-selected' src='img/building/" + n + ".gif' tips='" + u["m" + n] + "' width='86px' height='86px' />", t += "</div>";
			return t
		}, utl.techDataToTable = function(e) {
			var t = "";
			if (1 === e.tbtype) {
				if (!this.objIsEmpty(e.rf))
					for (var n in e.rf) t += u.str161 + " " + u["m" + n] + ": " + e.rf[n] + "<br>";
				t += "<br><table class='datatable' width='100%'>";
				var i = u.str128 + ": " + e.attack_base + "<br>" + u.str129 + ": " + e.attack_plus + "<br />" + u.str130 + ": " + e.attack_ally;
				t += "<tr><td>" + u.str159 + "</td><td><span class='link' tips='" + i + "'>" + e.attack + "</span></td></tr>", i = u.str128 + ": " + e.shield_base + "<br>" + u.str129 + ": " + e.shield_plus + "<br />" + u.str130 + ": " + e.shield_ally, t += "<tr><td>" + u.str151 + "</td><td><span class='link' tips='" + i + "'>" + e.shield + "</span></td></tr>", i = u.str128 + ": " + e.struct_base + "<br>" + u.str129 + ": " + e.struct_plus + "<br />" + u.str130 + ": " + e.struct_ally, t += "<tr><td>" + u.str160 + "</td><td><span class='link' tips='" + i + "'>" + e.struct + "</span></td></tr>", 0 < e.speed && (t += "<tr><td>" + u.speed + "</td><td>" + e.speed + "</td></tr>"), 0 < e.capacity && (t += "<tr><td>" + u.capacity + "</td><td>" + e.capacity + "</td></tr>"), 0 < e.deutconsume && (t += "<tr><td>" + u.deutconsume + "</td><td>" + e.consumption + "</td></tr>"), t += "</table>"
			} else if (2 === e.tbtype || 3 === e.tbtype || 4 === e.tbtype || 5 === e.tbtype) {
				var s = d.planet["m" + e.bid],
					r = 4 === e.tbtype ? u.str133 : 3 === e.tbtype ? u.capacity : u.str132;
				for (t += "<table class='datatable' width='100%'>", t += "<tr><td>" + u.lvl + "</td><td>" + r + "</td><td>" + u.diff + "</td></tr>", n = 0; n < e.level.length; n++) t += "<tr class='" + (e.level[n].level == s ? "current" : "") + "'><td class='undermark'>" + e.level[n].level + "</td><td class='undermark'>" + e.level[n].amount + "</td><td class='" + (e.level[n].amount_diff < 0 ? "overmark" : "undermark") + "'>" + e.level[n].amount_diff + "</td></tr>"
			} else if (6 === e.tbtype)
				for (s = d.planet["m" + e.bid], t += "<table class='datatable' width='100%'>", t += "<tr><td>" + u.lvl + "</td><td>" + u.str132 + "</td><td>" + u.diff + "</td><td>" + u.deutconsume + "</td><td>" + u.diff + "</td></tr>", n = 0; n < e.level.length; n++) t += "<tr class='" + (e.level[n].level == s ? "current" : "") + "'><td class='undermark'>" + e.level[n].level + "</td><td class='undermark'>" + e.level[n].amount + "</td><td class='" + (e.level[n].amount_diff < 0 ? "overmark" : "undermark") + "'>" + e.level[n].amount_diff + "</td><td class='overmark'>" + e.level[n].consume + "</td><td class='" + (e.level[n].consume_diff < 0 ? "overmark" : "undermark") + "'>" + e.level[n].consume_diff + "</td></tr>";
			return t
		}, utl.animateDomInit = function(e) {
			e ? ($("#building-info")
				.css({
					width: 0,
					height: 0
				})
				.show(), $("#officer-info")
				.css({
					width: 0,
					height: 0
				})
				.show()) : ($("#building-info")
				.css({
					width: "654px",
					height: "300px"
				})
				.hide(), $("#officer-info")
				.css({
					width: "654px",
					height: "300px"
				})
				.hide())
		}, utl.strConvert = function(e) {
			return e.replace(/&/g, "&amp;")
				.replace(/</g, "&lt;")
				.replace(/>/g, "&gt;")
				.replace(/'/g, "&#039;")
				.replace(/"/g, "&quot;")
		}, utl.timeToDate = function(e) {
			if (0 == e || !e) return "";
			var t = new Date;
			t.setTime(1e3 * e);
			var n = t.getMonth() + 1;
			n < 10 && (n = "0" + n);
			var i = t.getDate();
			i < 10 && (i = "0" + i);
			var s = t.getFullYear() + "-" + n + "-" + i,
				r = t.getHours();
			r < 10 && (r = "0" + r);
			var a = t.getMinutes();
			a < 10 && (a = "0" + a);
			var l = t.getSeconds();
			return l < 10 && (l = "0" + l), s + " " + r + ":" + a + ":" + l
		}, utl.setBuyResourceFunc = function(e, t) {
			d.confirmFunc = function() {
				d.send({
					mod: "cost",
					xid: 2,
					did: 1,
					res: t,
					count: e
				})
			}
		}, utl.setBuyPointFunc = function(e) {
			d.confirmFunc = function() {
				d.send({
					mod: "cost",
					xid: 3,
					did: 1,
					count: e
				})
			}
		}, utl.getPageList = function(e, t, i) {
			var n, s = "";
			if (s += "<div actid='" + i + "' page='" + (t - 1) + "' class='hand page-item" + (1 < t ? "" : " btn_disabled") + "'>&lt;</div>", e <= 7)
				for (n = 1; n <= e; n++) s += r(n, t);
			else if (t <= 3) {
				for (n = 1; n <= 5; n++) s += r(n, t);
				s += '<span class="dot">...</span>', s += r(e, t)
			} else if (e - 2 <= t)
				for (s += r(1, t), s += '<span class="dot">...</span>', n = e - 4; n <= e; n++) s += r(n, t);
			else {
				for (s += r(1, t), s += '<span class="dot">...</span>', n = t - 2; n <= t + 2; n++) s += r(n, t);
				s += '<span class="dot">...</span>', s += r(e, t)
			}
			return s + '<div actid="' + i + '" page="' + (e <= t ? "" : t + 1) + '" class="hand page-item' + (e <= t ? " btn_disabled" : "") + '">&gt;</div>';

			function r(e, t) {
				var n = '<div actid="' + i + '"';
				return n += ' page="' + e + '"', (n += e == t ? ' class="hand page-item-on"' : ' class="hand page-item"') + ">" + e + "</div>"
			}
		}, utl.msgMark = function(e) {
			if ("3" === e.value) d.send({
				mod: "messagedel",
				xid: 0,
				msg_id: -1,
				page: d.flags.msgCurrentPage
			});
			else if ("1" === e.value || "2" === e.value) {
				var n = [];
				if ($(".msg-check:checked")
					.each(function(e, t) {
						n.push(t.value)
					}), 0 === n.length) return void(e.value = 0);
				n = n.join(","), "1" === e.value ? d.send({
					mod: "messagemark",
					xid: 0,
					msg_id: n,
					page: d.flags.msgCurrentPage
				}) : d.send({
					mod: "messagedel",
					xid: 0,
					msg_id: n,
					page: d.flags.msgCurrentPage
				}), e.value = 0
			}
		}, utl.search = function() {
			var e = l.getElementById("search-keywords")
				.value;
			return !!e && (d.checkEvilStr(e) ? (d.fadebox(u.err24), !1) : {
				mod: "search",
				xid: d.flags.searchType,
				keywords: e
			})
		}, utl.msgContentConvert = function(e) {
			var t = "",
				n = 0;
			if (1 == e.type) {
				var i = "";
				for (n in e.target_type < 3 && (i = "(" + (1 == e.target_type ? u.planet : u.moon) + ")"), t += u.msgstr1 + " [" + e.pos + "]" + i + " " + u.msgstr2 + "<br /><br />", e.fleets) t += u["m" + n] + ": " + e.fleets[n] + "<br />";
				if (e.res.metal || e.res.crystal || e.res.deuterium)
					for (n in t += "<br />" + u.msgstr3 + ": ", e.res) t += u[n] + ": " + e.res[n] + " ";
				0 < e.dm && (t += "<br />" + u.darkmatter + ":" + e.dm)
			} else if (2 == e.type)
				for (n in t += u.msgstr6 + " [" + e.start_pos + "] " + u.msgstr7 + " [" + e.target_pos + "](" + (1 == e.target_type ? u.planet : u.moon) + ") " + u.msgstr8 + "<br />", e.res) t += u[n] + ": " + e.res[n] + " ";
			else if (3 == e.type) {
				for (n in t += u.msgstr6 + " [" + e.start_pos + "] " + u.msgstr12 + " [" + e.target_pos + "](" + (1 == e.target_type ? u.planet : u.moon) + ") <br />", e.fleets) t += u["m" + n] + ": " + e.fleets[n] + "<br />";
				for (n in e.res) t += u[n] + ": " + e.res[n] + " "
			} else if (4 == e.type)
				for (n in t += u.msgstr10 + "[" + e.pos + "]" + u.msgstr11, e.res) t += u[n] + ": " + e.res[n] + " ";
			else if (5 == e.type) t += "[" + e.pos + "]" + u.msgstr9;
			else if (6 == e.type)
				for (n in t += u.msgstr4 + " [" + e.pos + "](" + (1 == e.target_type ? u.planet : u.moon) + ") " + u.msgstr5 + "<br /><br />", e.fleets) t += u["m" + n] + ": " + e.fleets[n] + "<br />";
			else if (7 == e.type) {
				var s, r = 1;
				if (t += "<div class='msg-content-header'>" + e.planetname + " <span actid='36' class='link' position='" + e.pos + "'>[" + e.pos + "]</span> (" + u.player + ": " + e.username + ")</div>", t += "<table width='450px'><tr><td>" + u.metal + ":</td><td>" + e.spyinfo.resource.metal + "</td><td>" + u.crystal + ":</td><td>" + e.spyinfo.resource.crystal + "</td></tr>", t += "<tr><td>" + u.deuterium + ":</td><td>" + e.spyinfo.resource.deuterium + "</td><td>" + u.energy + ":</td><td>" + e.spyinfo.resource.energy + "</td></tr></table>", !this.objIsEmpty(e.spyinfo.building)) {
					for (n in t += "<div class='msg-content-header'>" + u.building + "</div>", t += "<table width='100%'>", r = 1, e.spyinfo.building) 1 == (s = r % 3) && (t += "<tr>"), t += "<td>" + u["m" + n] + ":</td><td>" + e.spyinfo.building[n] + "</td>", 0 === s && (t += "</tr>"), r++;
					t += "</table>"
				}
				if (!this.objIsEmpty(e.spyinfo.fleet)) {
					for (n in t += "<div class='msg-content-header'>" + u.fleet + "</div>", t += "<table width='100%'>", r = 1, e.spyinfo.fleet) 1 == (s = r % 3) && (t += "<tr>"), t += "<td>" + u["m" + n] + ":</td><td>" + e.spyinfo.fleet[n] + "</td>", 0 === s && (t += "</tr>"), r++;
					t += "</table>"
				}
				if (!this.objIsEmpty(e.spyinfo.defense)) {
					for (n in t += "<div class='msg-content-header'>" + u.defense + "</div>", t += "<table width='100%'>", r = 1, e.spyinfo.defense) 1 == (s = r % 3) && (t += "<tr>"), t += "<td>" + u["m" + n] + ":</td><td>" + e.spyinfo.defense[n] + "</td>", 0 === s && (t += "</tr>"), r++;
					t += "</table>"
				}
				if (!this.objIsEmpty(e.spyinfo.research)) {
					for (n in t += "<div class='msg-content-header'>" + u.research + "</div>", t += "<table width='100%'>", r = 1, e.spyinfo.research) 1 == (s = r % 3) && (t += "<tr>"), t += "<td>" + u["m" + n] + ":</td><td>" + e.spyinfo.research[n] + "</td>", 0 === s && (t += "</tr>"), r++;
					t += "</table>"
				}
				t += "<div class='msg-content-header'>" + (e.destroyed ? u.msgstr35 : u.msgstr34) + "</div>", t += "<div style='margin: 10px 0 0 250px;' class='button94' actid='90' position='" + e.pos + "' planettype='" + e.target_type + "' mission='1'>" + u.str158 + "</div>"
			} else if (8 == e.type) t += u.msgstr36 + " " + e.start_planetname + " <span class='link' actid='36' position='" + e.start_pos + "'>[" + e.start_pos + "]</span> (" + u.player + ": " + e.start_username + ") " + u.msgstr37 + ": ", t += e.target_planetname + "<span actid='36' class='link' position='" + e.target_pos + "'>[" + e.target_pos + "]</span>";
			else if (9 == e.type) t = u.msgstr39 + u.coordinate + ": <span actid='36' class='link' position='" + e.pos + "'>[" + e.pos + "]</span>";
			else if (10 == e.type) t = u.msgstr38 + u.coordinate + ": <span actid='36' class='link' position='" + e.pos + "'>[" + e.pos + "]</span>";
			else if (12 == e.type) t = u.msgstr44;
			else if (13 == e.type) e.moon_destroyed ? (t = u.msgstr45, e.ds_destroyed && (t += u.msgstr49)) : t = u.msgstr46;
			else if (14 == e.type) e.moon_destroyed ? (t = u.msgstr45, e.ds_destroyed && (t += u.msgstr50)) : t = u.msgstr46;
			else if (15 == e.type) t = u.msgstr53;
			else if (11 == e.type)
				if (1 === e.result) t = u["expe_all_lost_" + e.result_type];
				else if (2 === e.result)
				for (var n in t = u["expe_part_lost_" + e.result_type], t += "<br>" + u.msgstr41 + ":", e.lost) t += " " + u["m" + n] + " " + e.lost[n];
			else if (3 === e.result) t = u["expe_find_res_" + e.result_type], t += "<br>" + u.msgstr43 + ": ", t += u.metal + " " + e.metal + " ", t += u.crystal + " " + e.crystal + " ", t += u.deuterium + " " + e.deuterium;
			else if (4 === e.result) t = u["expe_find_dm_" + e.result_type], t += "<br>" + u.msgstr40 + ":" + e.darkmatter;
			else if (5 === e.result)
				for (var n in t = u["expe_find_ship_" + e.result_type], t += "<br>" + u.msgstr42 + ":", e.ships) t += " " + u["m" + n] + " " + e.ships[n];
			else 6 === e.result && (t = u["expe_find_nothing_" + e.result_type]);
			else if (19 == e.type) t = u.msgstr51 + " " + e.username + " " + u.msgstr52 + e.darkmatter;
			else if (20 == e.type) {
				var a = this.getFirstKey(e.battle.attacker);
				t += "<table cellspacing='4' width='100%' style='border-bottom: 1px dotted #999;'>", t += "<tr><td width='100px' align='right'>" + u.msgstr13 + ":</td><td> &nbsp;" + e.battle.attacker[a].player + " " + u.from + " <span class='link' actid='36' position='" + e.battle.attacker[a].pos + "'>" + e.battle.attacker[a].planet + "[" + e.battle.attacker[a].pos + "]</span></td></tr>", t += "<tr><td align='right'>" + u.msgstr14 + ":</td><td> &nbsp;" + e.battle.defenser[0].player + " <span class='link' actid='36' position='" + e.battle.defenser[0].pos + "'>" + e.battle.defenser[0].planet + "[" + e.battle.defenser[0].pos + "]</span></td></tr>", t += "<tr><td align='right'>" + u.msgstr15 + ":</td><td> &nbsp;" + (1 == e.battle.winner ? u.msgstr16 : 2 == e.battle.winner ? u.msgstr17 : u.msgstr18) + "</td></tr>", t += "<tr><td align='right'>" + u.msgstr19 + ":</td><td> &nbsp;" + u.attack + ":" + e.battle.strength.attacker.attack + ", " + u.defense + ":" + e.battle.strength.attacker.defense + "</td></tr>", t += "<tr><td align='right'>" + u.msgstr20 + ":</td><td> &nbsp;" + u.attack + ":" + e.battle.strength.defenser.attack + ", " + u.defense + ":" + e.battle.strength.defenser.defense + "</td></tr>", t += "<tr><td align='right'>" + u.plunder + ":</td><td> &nbsp;" + u.metal + ":" + e.battle.take.metal + ", " + u.crystal + ":" + e.battle.take.crystal + ", " + u.deuterium + ":" + e.battle.take.deuterium + "</td></tr>", t += "<tr><td align='right'>" + u.msgstr21 + ":</td><td> &nbsp;" + e.battle.lost.attacker + "</td></tr>", t += "<tr><td align='right'>" + u.msgstr22 + ":</td><td> &nbsp;" + e.battle.lost.defenser + "</td></tr>", !e.battle.moon.has && 0 < e.battle.moon.chance && (t += "<tr><td align='right'>" + u.msgstr23 + ":</td><td> &nbsp;" + u.chance + ":" + e.battle.moon.chance + "%<td></tr>"), e.battle.moon.created || (t += "<tr><td align='right'>" + u.debris + ":</td><td> &nbsp;" + u.metal + ":" + e.battle.debris.metal + ", " + u.crystal + ":" + e.battle.debris.crystal + "</td></tr>"), t += "</table>", t += "<div style='margin: 15px 0;padding-bottom: 10px;border-bottom: 1px dotted #999;'><h2 class='red'>" + u.msgstr13 + "</h2>";
				var l = !0;
				for (var n in e.battle.attacker) t += o(e.battle.attacker[n], !0, l), l = !1;
				if (t += "</div><div><h2 class='b1'>" + u.msgstr14 + "</h2>", this.objIsEmpty(e.battle.defenser)) t += u.msgstr28;
				else
					for (var n in l = !0, e.battle.defenser) t += o(e.battle.defenser[n], !1, l), l = !1;
				t += "</div>"
			} else if (21 == e.type) {
				if (t += "<div id='battle-report-brief'>", t += "<h3>" + u.str146 + "</h3><div class='combatants'>", t += "<p class='center'>" + c(e.battle.defenser.planetname, e.battle.defenser.position, e.battle.defenser.planettype) + "&nbsp" + u.str147 + "&nbsp(" + e.battle.time + ")</p>", t += "<div class='center'>" + e.battle.attacker.username + "&nbsp;" + u.from + "&nbsp;" + c(e.battle.attacker.planetname, e.battle.attacker.position, e.battle.attacker.planettype), t += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;", t += e.battle.defenser.username + "&nbsp;" + u.from + "&nbsp;" + c(e.battle.defenser.planetname, e.battle.defenser.position, e.battle.defenser.planettype), t += "</div></div>", t += "<table class='table' width='560px'>", t += "<tr>", t += "<td width='60px'>" + u.fleet + "</td><td align='right' width='180px'>" + e.battle.attacker.ships + "</td><td width='30px'>&nbsp;</td><td width='60px'>" + u.fleet + "/" + u.defense + "</td><td align='right'>" + e.battle.defenser.ships + "</td>", t += "</tr>", t += "<tr>", t += "<td>" + u.msgstr25 + "</td><td align='right'>" + e.battle.attacker.lost + "</td><td>&nbsp;</td><td>" + u.msgstr25 + "</td><td align='right'>" + e.battle.defenser.lost + "</td>", t += "</tr>", t += "<tr>", t += "<td>" + u.str150 + "</td><td align='right'>" + 10 * e.battle.attacker.tech.m109 + "%</td><td>&nbsp;</td><td>" + u.str150 + "</td><td align='right'>" + 10 * e.battle.defenser.tech.m109 + "%</td>", t += "<tr>", t += "<td>" + u.str151 + "</td><td align='right'>" + 10 * e.battle.attacker.tech.m110 + "%</td><td>&nbsp;</td><td>" + u.str151 + "</td><td align='right'>" + 10 * e.battle.defenser.tech.m110 + "%</td>", t += "</tr>", t += "<tr>", t += "<td>" + u.str152 + "</td><td align='right'>" + 10 * e.battle.attacker.tech.m111 + "%</td><td>&nbsp;</td><td>" + u.str152 + "</td><td align='right'>" + 10 * e.battle.defenser.tech.m111 + "%</td>", t += "</tr>", t += "</table>", t += "<div class='combatants center'>", 1 === e.battle.winner ? t += u.msgstr13 + "(" + e.battle.attacker.username + ")" + u.str153 : 2 === e.battle.winner ? t += u.msgstr14 + "(" + e.battle.defenser.username + ")" + u.str153 : t += u.str154, t += "</div>", t += "<div style='line-height: 20px;margin-top: 17px;'>", 1 === e.battle.winner && (t += u.plunder + ": " + e.battle.take.metal + " " + u.metal + ", " + e.battle.take.crystal + " " + u.crystal + ", " + e.battle.take.deuterium + " " + u.deuterium + "<br>"), t += u.debris + ": " + e.battle.debris.metal + " " + u.metal + ", " + e.battle.debris.crystal + " " + u.crystal + "<br>", t += u.repair + ": ", utl.objIsEmpty(e.battle.repair)) t += u.str155;
				else
					for (var n in e.battle.repair) t += u["m" + n] + " " + e.battle.repair[n] + " ";
				t += "</div>", t += "<div style='margin-left:244px;' class='button94' actid='119' fleet_key='" + e.battle.reportkey + "'>" + u.str148 + "</div>", t += "</div>"
			}
			return t;

			function o(e, t, n) {
				var i = "",
					s = (d.util, []),
					r = "",
					a = "",
					l = t ? n ? u.msgstr29 : u.msgstr31 : n ? u.msgstr30 : u.msgstr32;
				if (!utl.objIsEmpty(e.fleet)) {
					for (var o in a = r = "", e.fleet) r += "<td><img width='24' height='24' src='img/building/" + o + ".gif' tips='" + u["m" + o] + "' /></td>", a += "<td>" + e.fleet[o] + "</td>", s.push(o);
					for (i += "<table class='battle-table'>", i += "<tr><td>" + l + "</td><td colspan='" + s.length + "'>" + e.player + "&nbsp;&nbsp;&nbsp;" + e.planet + "[" + e.pos + "]</td></tr>", i += "<tr><td>" + u.fleet + "</td>" + r + "</tr>", i += "<tr><td>" + u.msgstr24 + "</td>" + a + "</tr>", i += "<tr><td>" + u.msgstr25 + "</td>", o = 0; o < s.length; o++) i += "<td>" + (void 0 === e.lost[s[o]] ? "0" : e.lost[s[o]]) + "</td>";
					for (i += "</tr>", i += "<tr><td>" + u.msgstr27 + "</td>", o = 0; o < s.length; o++) i += "<td>" + (void 0 === e.left[s[o]] ? "0" : e.left[s[o]]) + "</td>";
					i += "</tr>", i += "</table>"
				}
				if (!t && !utl.objIsEmpty(e.defense)) {
					for (var o in a = r = "", s.length = 0, e.defense) r += "<td><img width='24' height='24' src='img/building/" + o + ".gif' tips='" + u["m" + o] + "' /></td>", a += "<td>" + e.defense[o] + "</td>", s.push(o);
					for (i += "<table class='battle-table'>", i += "<tr><td>" + l + "</td><td colspan='" + s.length + "'>" + e.player + "&nbsp;&nbsp;&nbsp;" + e.planet + "[" + e.pos + "]</td></tr>", i += "<tr><td>" + u.defense + "</td>" + r + "</tr>", i += "<tr><td>" + u.msgstr24 + "</td>" + a + "</tr>", i += "<tr><td>" + u.msgstr25 + "</td>", o = 0; o < s.length; o++) i += "<td>" + (void 0 === e.lost[s[o]] ? "0" : e.lost[s[o]]) + "</td>";
					for (i += "</tr>", i += "<tr><td>" + u.msgstr26 + "</td>", o = 0; o < s.length; o++) i += "<td>" + (void 0 === e.repair[s[o]] ? "0" : e.repair[s[o]]) + "</td>";
					for (i += "</tr>", i += "<tr><td>" + u.msgstr27 + "</td>", o = 0; o < s.length; o++) i += "<td>" + (void 0 === e.left[s[o]] ? "0" : e.left[s[o]]) + "</td>";
					i += "</tr>", i += "</table>"
				}
				return !t && utl.objIsEmpty(e.defense) && utl.objIsEmpty(e.fleet) && (i += "<table class='battle-table'><tr><td>" + u.str134 + "</td></tr></table>"), i += "<div>" + u.msgstr33 + ": " + u.m109 + ": +" + (e.tech.m109 + 0) + "%, ", i += u.m111 + ": +" + (e.tech.m111 + 0) + "%, ", i += u.m110 + ": +" + (e.tech.m110 + 0) + "%", i += "</div>", i += "<div>" + u.str130 + ": " + u.str48 + ": +" + (e.addition.ssattack + 0) + "%, ", i += u.str49 + ": +" + (e.addition.emattack + 0) + "%, ", i += u.str50 + ": +" + (e.addition.ssdefense + 0) + "%, ", (i += u.str51 + ": +" + (e.addition.emdefense + 0) + "%") + "</div>"
			}
		}
	}(),
	function() {
		var l = window.SNS,
			o = document,
			d = l.util,
			r = l.lang;

		function n(e) {
			if (l.flags.officerInfoId === e) return l.hide("officer-info"), l.flags.officerInfoId = null, !1;
			if (l.flags.officerInfoId = e, o.getElementById("officer-info-img")
				.className = 0 === e ? "darkmatter-200" : "officer" + e + "-200", l.setHTML({
					"officer-info-title": 0 === e ? r.darkmatter : r["officer" + e],
					"officer-info-desc": 0 === e ? r.darkmatterdesc : r["officer" + e + "desc"],
					"officer-info-effect": 0 === e ? r.darkmattereffect : r["officer" + e + "effect"]
				}), 0 === e) o.getElementById("officer-info-buy1")
				.innerHTML = "<br />" + r.str111, o.getElementById("officer-info-buy2")
				.style.display = "none", o.getElementById("officer-info-free-darkmatter")
				.style.display = "none";
			else {
				var t = l.planet.officer[e],
					n = o.getElementById("officer-info-buy1"),
					i = o.getElementById("officer-info-buy2");
				n.innerHTML = r.str112 + "<br />" + t.price1 + "<br />" + r.darkmatter, i.innerHTML = r.str113 + "<br />" + t.price2 + "<br />" + r.darkmatter, i.style.display = "block", o.getElementById("officer-info-free-darkmatter")
					.style.display = "none"
			}
			l.show("officer-info")
		}
		l.click = {};
		var i = l.click;
		i[1] = function(e) {
			return l.removeWindow(), !1
		}, i[2] = function(e) {
			return l.addWindow("msgbox"), !1
		}, i[3] = function(e) {
			return d.menuDivChange(e), !1
		}, i[4] = function(e) {
			return d.menuDivChange(e), {
				mod: "building",
				xid: 1,
				type: 1
			}
		}, i[5] = function(e) {
			return d.menuDivChange(e), {
				mod: "building",
				xid: 2,
				type: 2
			}
		}, i[6] = function(e) {
			return d.menuDivChange(e), {
				mod: "building",
				xid: 3,
				type: 3
			}
		}, i[7] = function(e) {
			return d.menuDivChange(e), {
				mod: "building",
				xid: 4,
				type: 4
			}
		}, i[8] = function(e) {
			var t = l.planet.ship;
			if (l.flags.templateLoaded.fleetstep1)
				for (var n in t) 212 != n && (o.getElementById("fleet-item-count-" + n)
					.innerHTML = t[n], o.getElementById("ship-count-" + n)
					.value = "");
			else d.template("fleet-step1", t), delete l.template["fleet-step1"], l.flags.templateLoaded.fleetstep1 = !0;
			if (1 < l.flags.fleetMission.step) {
				function i() {
					o.getElementById("fleet-prev-btn")
						.style.display = "none", o.getElementById("fleet-next-btn")
						.innerHTML = r.next, o.getElementById("fleet-select-all")
						.style.display = "block", o.getElementById("fleet-select-none")
						.style.display = "block", l.flags.fleetMission.step = 1
				}
				l.flags.animateShow ? TweenLite.to(o.getElementById("fleet-steps"), .7, {
					css: {
						marginLeft: 0
					},
					ease: Cubic.easeOut,
					onComplete: i
				}) : (i(), $("#fleet-steps")
					.css({
						marginLeft: 0
					}))
			}
			return d.menuDivChange(e), d.setFleetNav(1), !1
		}, i[9] = function(e) {
			return d.menuDivChange(e), l.flags.galaxyGalaxy = l.planet.galaxy, l.flags.galaxySystem = l.planet.system, d.showGalaxy()
		}, i[10] = function(e) {
			return d.menuDivChange(e), {
				mod: "allianceinfo",
				xid: 1,
				aid: 0
			}
		}, i[11] = function(e) {
			var t = l.flags.officerExpire,
				n = {
					lang: r,
					officer1: 0 < t[1] ? l.getDate(t[1], !1) : r.str115,
					officer2: 0 < t[2] ? l.getDate(t[2], !1) : r.str115,
					officer3: 0 < t[3] ? l.getDate(t[3], !1) : r.str115,
					officer4: 0 < t[4] ? l.getDate(t[4], !1) : r.str115,
					officer5: 0 < t[5] ? l.getDate(t[5], !1) : r.str115
				};
			return l.flags.templateLoaded.officer ? l.template.officer(n) : (d.template("officer", n), l.flags.templateLoaded.officer = !0), d.menuDivChange(e), !1
		}, i[12] = function(e) {
			var t = parseInt(e.getAttribute("bid"), 10),
				n = l.building[t];
			if (l.flags.buildingInfoId === t) return l.hideBuildingInfo(), !1;
			o.getElementById("building-info-img")
				.src = "img/building/" + t + ".gif", l.setHTML({
					"building-info-title": r["m" + t] + " (" + (n.type < 3 ? r.lvl : r.count) + ": " + n.count + ")",
					"building-info-desc": r["m" + t + "desc"],
					"building-info-uptips": n.type < 3 ? r.upgradeto + (n.count + 1) + r.level : r.unitprice
				}), 0 === l.flags.buildingInfoId ? l.show("building-info") : o.getElementById("building-img-" + l.flags.buildingInfoId)
				.className = "building-img-not-selected", l.flags.buildingInfoId = t, o.getElementById("building-img-" + t)
				.className = "building-img-selected", l.getQueueKey(t), l.flags.buildingInfoKey && 3 != n.type && 4 != n.type ? o.getElementById("building-info-close")
				.style.display = "block" : o.getElementById("building-info-close")
				.style.display = "none";
			var i = o.getElementById("building-info-funclink");
			return 43 === t && 0 < l.planet.building[43] ? (i.innerHTML = r.str104, i.style.display = "block") : i.style.display = "none", {
				mod: "building",
				type: n.type,
				bid: t,
				xid: 10
			}
		}, i[13] = function(e) {
			return l.hideBuildingInfo(), !1
		}, i[14] = function(e) {
			var t = l.flags.buildingInfoId;
			if (0 < t) {
				var n = 1,
					i = l.building[t].type;
				return 3 !== i && 4 !== i || 407 == t || 408 == t || (n = o.getElementById("build-count")
					.value, d.numberCheck(n)) ? {
					mod: "planet",
					build_id: t,
					build_count: n,
					xid: 2
				} : (l.fadebox(r.err1), !1)
			}
			return !1
		}, i[15] = function(e) {
			return l.hideNotifyBox(), l.confirmFunc(), !1
		}, i[16] = function(e) {
			return l.hideNotifyBox(), !1
		}, i[17] = function(e) {
			return l.hideNotifyBox(), !1
		}, i[18] = function(e) {
			return "" !== l.flags.buildingInfoKey && l.flags.buildingInfoId && l.confirmbox(0 < l.flags.buildingInfoCount ? r.str98 : r.str99, function() {
				l.send({
					mod: "planet",
					build_id: l.flags.buildingInfoId,
					build_key: l.flags.buildingInfoKey
				}), l.hideBuildingInfo()
			}), !1
		}, i[19] = function(e) {
			var t = e.getAttribute("buildtype");
			if (3 != t && 4 != t) {
				var n = e.getAttribute("buildid"),
					i = e.getAttribute("buildkey"),
					s = e.getAttribute("count");
				return n && i && l.confirmbox("-1" === s ? r.str101 : r.str100, function() {
					l.send({
						mod: "planet",
						build_id: n,
						build_key: i
					})
				}), !1
			}
		}, i[20] = function(e) {
			var t = e.getAttribute("pid");
			return !(!t || t == l.planet.pid) && (l.queueReset(), {
				mod: "planet",
				change_pid: t,
				xid: -2
			})
		}, i[21] = function(e) {
			if (!(l.flags.galaxyGalaxy <= 1)) return l.flags.galaxyGalaxy--, {
				mod: "galaxy",
				xid: 0,
				galaxy: l.flags.galaxyGalaxy,
				system: l.flags.galaxySystem
			}
		}, i[22] = function(e) {
			return l.flags.galaxyGalaxy++, {
				mod: "galaxy",
				xid: 0,
				galaxy: l.flags.galaxyGalaxy,
				system: l.flags.galaxySystem
			}
		}, i[23] = function(e) {
			if (!(l.flags.galaxySystem <= 1)) return l.flags.galaxySystem--, {
				mod: "galaxy",
				xid: 0,
				galaxy: l.flags.galaxyGalaxy,
				system: l.flags.galaxySystem
			}
		}, i[24] = function(e) {
			return l.flags.galaxySystem++, {
				mod: "galaxy",
				xid: 0,
				galaxy: l.flags.galaxyGalaxy,
				system: l.flags.galaxySystem
			}
		}, i[25] = function(e) {
			return {
				mod: "galaxy",
				xid: 0,
				galaxy: o.getElementById("galaxy-galaxy-value")
					.value,
				system: o.getElementById("galaxy-system-value")
					.value
			}
		}, i[26] = function(e) {
			var t = l.flags.fleetMission;
			return t.targetPosition = [l.flags.galaxyGalaxy, l.flags.galaxySystem, 16], t.targetType = 1, t.mission = 15, i[8](o.getElementById("fleet")), !1
		}, i[27] = function(e) {
			var t = parseInt(e.getAttribute("bid"));
			l.planet.ship[t] && (o.getElementById("ship-count-" + t)
				.value = l.planet.ship[t])
		}, i[28] = function(e) {
			var t = l.flags.fleetMission;
			if (1 === t.step) {
				var n = d.getShipCount("ship");
				if (0 < n.count) {
					t.ships = n, 0 != t.targetPosition[0] && 0 != t.targetPosition[1] && 0 != t.targetPosition[2] || (t.targetPosition = [l.planet.galaxy, l.planet.system, l.planet.planet]), l.flags.templateLoaded.fleetstep2 || (d.template("fleet-step2", {}), delete l.template["fleet-step2"], l.flags.templateLoaded.fleetstep2 = !0), o.getElementById("fleet-target-galaxy")
						.value = t.targetPosition[0], o.getElementById("fleet-target-system")
						.value = t.targetPosition[1], o.getElementById("fleet-target-planet")
						.value = t.targetPosition[2], 1 == l.planet.planet_type ? (o.getElementById("fleet-step2-start")
							.innerHTML = r.planet, o.getElementById("fleet-step2-start-planet")
							.className = "planet-selected", o.getElementById("fleet-step2-start-moon")
							.className = "moon") : (o.getElementById("fleet-step2-start")
							.innerHTML = r.moon, o.getElementById("fleet-step2-start-planet")
							.className = "planet", o.getElementById("fleet-step2-start-moon")
							.className = "moon-selected"), o.getElementById("fleet-step2-start-position")
						.innerHTML = r.coordinate + ": " + l.planet.position, o.getElementById("fleet-step2-target")
						.innerHTML = t.targetType <= 1 ? r.planet : 2 == t.targetType ? r.moon : r.debris, t.targetType <= 1 ? (o.getElementById("fleet-step2-target-planet")
							.className = "planet-selected", o.getElementById("fleet-step2-target-moon")
							.className = "moon", o.getElementById("fleet-step2-target-debris")
							.className = "debris") : 2 == t.targetType ? (o.getElementById("fleet-step2-target-planet")
							.className = "planet", o.getElementById("fleet-step2-target-moon")
							.className = "moon-selected", o.getElementById("fleet-step2-target-debris")
							.className = "debris") : (o.getElementById("fleet-step2-target-planet")
							.className = "planet", o.getElementById("fleet-step2-target-moon")
							.className = "moon", o.getElementById("fleet-step2-target-debris")
							.className = "debris-selected"), o.getElementById("fleet-step2-fleets")
						.innerHTML = d.getFleetStr(n), d.updateFleetInfo();
					var i = function() {
						o.getElementById("fleet-prev-btn")
							.style.display = "block", o.getElementById("fleet-select-all")
							.style.display = "none", o.getElementById("fleet-select-none")
							.style.display = "none", d.setFleetNav(2), l.send({
								mod: "fleetlink",
								xid: 0
							})
					};
					l.flags.animateShow ? TweenLite.to(o.getElementById("fleet-steps"), .7, {
						css: {
							marginLeft: "-650px"
						},
						ease: Cubic.easeOut,
						onComplete: i
					}) : (i(), $("#fleet-steps")
						.css({
							marginLeft: "-650px"
						})), t.step = 2
				}
			} else if (2 === t.step) l.flags.templateLoaded.fleetstep3 || (d.template("fleet-step3", {
				lang: r
			}), l.flags.templateLoaded.fleetstep3 = !0, delete l.template["fleet-step3"]), i = function() {
				var e = l.flags.fleetMission;
				o.getElementById("fleet-next-btn")
					.innerHTML = r.fleetgo, o.getElementById("target-value")
					.innerHTML = "[" + e.targetPosition[0] + ":" + e.targetPosition[1] + ":" + e.targetPosition[2] + "] " + e.targetName, o.getElementById("time2-value")
					.innerHTML = e.time, o.getElementById("consume2-value")
					.innerHTML = e.consume, d.updateResourceLoad(), d.setMissionIcon(e.mission, e.missions), d.setFleetNav(3)
			}, l.flags.animateShow ? TweenLite.to(o.getElementById("fleet-steps"), .7, {
				css: {
					marginLeft: "-1320px"
				},
				ease: Cubic.easeOut,
				onComplete: i
			}) : (i(), $("#fleet-steps")
				.css({
					marginLeft: "-1320px"
				})), t.step = 3;
			else if (3 === t.step) return 0 == t.mission ? (l.fadebox(r.err17), !1) : t.metal + t.crystal + t.deuterium > t.storage ? (l.fadebox(r.err18), !1) : l.flags.fleetSendFlag ? (l.fadebox(r.err30), !1) : (l.flags.fleetSendFlag = !0, setTimeout(function() {
				l.flags.fleetSendFlag = !1
			}, 1e4), {
				mod: "fleet",
				xid: 2,
				mission: t.mission,
				target_galaxy: t.targetPosition[0],
				target_system: t.targetPosition[1],
				target_planet: t.targetPosition[2],
				target_type: t.targetType,
				fleets: d.shipToStr(t.ships),
				speed: t.speedRate,
				stay_time: o.getElementById("staytime-value")
					.value,
				fleet_metal: t.metal,
				fleet_crystal: t.crystal,
				fleet_deuterium: t.deuterium,
				attack_code: t.attackCode,
				fleet_hash: t.fleetHash
			})
		}, i[29] = function(e) {
			if (2 === l.flags.fleetMission.step) {
				var t = function() {
					o.getElementById("fleet-prev-btn")
						.style.display = "none", o.getElementById("fleet-select-all")
						.style.display = "block", o.getElementById("fleet-select-none")
						.style.display = "block", d.setFleetNav(1)
				};
				l.flags.animateShow ? TweenLite.to(o.getElementById("fleet-steps"), .7, {
					css: {
						marginLeft: 0
					},
					ease: Cubic.easeOut,
					onComplete: t
				}) : (t(), $("#fleet-steps")
					.css({
						marginLeft: 0
					})), l.flags.fleetMission.step = 1
			} else 3 === l.flags.fleetMission.step && (t = function() {
				o.getElementById("fleet-next-btn")
					.innerHTML = r.next, d.setFleetNav(2)
			}, l.flags.animateShow ? TweenLite.to(o.getElementById("fleet-steps"), .7, {
				css: {
					marginLeft: "-650px"
				},
				ease: Cubic.easeOut,
				onComplete: t
			}) : (t(), $("#fleet-steps")
				.css({
					marginLeft: "-650px"
				})), l.flags.fleetMission.step = 2);
			return !1
		}, i[30] = function(e) {
			var t = e.getAttribute("tid");
			return d.setTargetType(t), d.updateFleetInfo(), !1
		}, i[31] = function(e) {
			var t = l.flags.fleetMission,
				n = e.id.replace("mission-", "");
			return -1 < ("," + t.missions.toString() + ",")
				.indexOf("," + n + ",") && (o.getElementById("fleet-mission")
					.innerHTML = r["miss" + n], d.setMissionIcon(n, t.missions)), !1
		}, i[32] = function(e) {
			var t = e.getAttribute("res");
			return o.getElementById("fleet-resource-" + t)
				.value = 0, d.updateResourceLoad(), !1
		}, i[33] = function(e) {
			for (var t, n = ["metal", "crystal", "deuterium"], i = 0, s = e.getAttribute("res"), r = l.flags.fleetMission, a = 0; a < 3; a++) i += r[n[a]];
			if (0 !== (t = Math.max(r.storage - i, 0))) return t = Math.min(t, "deuterium" === s ? l.planet[s] - r.consume : l.planet[s]), o.getElementById("fleet-resource-" + s)
				.value = t, d.updateResourceLoad(), !1
		}, i[34] = function(e) {
			return l.flags.fleetMoreOpen ? (o.getElementById("content-event")
				.style.display = "none", o.getElementById("fleet-show-more")
				.className = "tips-more-close", l.flags.fleetMoreOpen = !1) : (o.getElementById("content-event")
				.style.display = "block", o.getElementById("fleet-show-more")
				.className = "tips-more-open", l.flags.fleetMoreOpen = !0), !1
		}, i[35] = function(e) {
			return o.getElementById("content-event")
				.style.display = "none", !(o.getElementById("fleet-show-more")
					.className = "tips-more-close")
		}, i[36] = function(e) {
			var t = e.getAttribute("position");
			if (t && -1 < t.indexOf(":")) {
				l.flags.floatDivShow && (l.flags.floatDivShow = !1, o.getElementById("float")
					.className = "hidden", o.getElementById("mask")
					.className = "hidden");
				var n = t.split(":");
				return l.flags.galaxyGalaxy = parseInt(n[0], 10), l.flags.galaxySystem = parseInt(n[1], 10), d.menuDivChange(o.getElementById("galaxy")), d.showGalaxy()
			}
			return !1
		}, i[37] = function(e) {
			return l.flags.templateLoaded.message || (d.template("message", {}), delete l.template.message, l.flags.templateLoaded.message = !0), d.menuDivChange(e), {
				mod: "messagelist",
				xid: 0,
				page: 1
			}
		}, i[38] = function(e) {
			return e.className = "content-tab-on", o.getElementById("content-tab-mailsend")
				.className = "content-tab", o.getElementById("table-message-list")
				.className = "", o.getElementById("table-message-send")
				.className = "hidden", o.getElementById("table-message-links")
				.className = "", o.getElementById("table-message-show")
				.className = "hidden", {
					mod: "messagelist",
					xid: 0,
					page: 1
				}
		}, i[39] = function(e) {
			return e.className = "content-tab-on", o.getElementById("content-tab-mailbox")
				.className = "content-tab", o.getElementById("table-message-send")
				.className = "", o.getElementById("table-message-list")
				.className = "hidden", o.getElementById("table-message-links")
				.className = "hidden", !(o.getElementById("table-message-show")
					.className = "hidden")
		}, i[40] = function(e) {
			var t = e.getAttribute("isreply"),
				n = "1" === t ? o.getElementById("message-show-sender")
				.innerHTML : o.getElementById("message-send-user")
				.value;
			if ("" === n) return l.fadebox(r.err19), !1;
			l.planet.username;
			var i = "1" === t ? r.mailreply + ": " + o.getElementById("message-show-title")
				.innerHTML : o.getElementById("message-send-title")
				.value;
			if ("" === i) return l.fadebox(r.err20), !1;
			var s = "1" === t ? o.getElementById("message-show-text")
				.value : o.getElementById("message-send-text")
				.value;
			return "" === s ? (l.fadebox(r.err21), !1) : {
				mod: "messagesend",
				xid: 1,
				to_user: n,
				title: i,
				content: s
			}
		}, i[41] = function(e) {
			return $("#table-message-list .msg-check")
				.attr("checked", e.checked), !1
		}, i[42] = function(e) {
			var t = e.getAttribute("mid");
			return !!t && (e.className = "link", {
				mod: "messageshow",
				xid: 0,
				msg_id: t
			})
		}, i[43] = function(e) {
			var t = e.getAttribute("mid");
			if (t && d.numberCheck(t)) return {
				mod: "messagedel",
				xid: 0,
				msg_id: t,
				page: l.flags.msgCurrentPage
			}
		}, i[44] = function(e) {
			return o.getElementById("table-message-list")
				.className = "", o.getElementById("table-message-links")
				.className = "", !(o.getElementById("table-message-show")
					.className = "hidden")
		}, i[45] = function(e) {
			var t = e.getAttribute("user");
			t && t !== l.planet.username && (l.flags.floatDivShow && (l.flags.floatDivShow = !1, o.getElementById("float")
					.className = "hidden", o.getElementById("mask")
					.className = "hidden"), i[37](o.getElementById("message")), i[39](o.getElementById("content-tab-mailsend")), o.getElementById("message-send-user")
				.value = t)
		}, i[46] = function(e) {
			var t = e.getAttribute("page");
			if (t && 0 < t) return {
				mod: "messagelist",
				xid: 0,
				page: t
			}
		}, i[47] = function(e) {
			var t = e.getAttribute("position")
				.split(":"),
				n = e.getAttribute("ship");
			return 0 === l.planet.m209 ? (l.fadebox(r.err1007), !1) : (n > l.planet.m209 && (n = l.planet.m209), {
				mod: "fleet",
				xid: 3,
				mission: 8,
				target_galaxy: t[0],
				target_system: t[1],
				target_planet: t[2],
				target_type: 3,
				fleets: "209:" + n,
				speed: 10,
				fleet_metal: 0,
				fleet_crystal: 0,
				fleet_deuterium: 0
			})
		}, i[48] = function(e) {
			var t = e.getAttribute("position")
				.split(":"),
				n = e.getAttribute("planettype");
			return {
				mod: "fleet",
				xid: 3,
				mission: 6,
				target_galaxy: t[0],
				target_system: t[1],
				target_planet: t[2],
				target_type: n,
				fleets: "210:" + l.planet.spynum,
				speed: 10,
				fleet_metal: 0,
				fleet_crystal: 0,
				fleet_deuterium: 0
			}
		}, i[49] = function(e) {
			var t = e.getAttribute("uid");
			return !!t && {
				mod: "friendapply",
				xid: 0,
				fuid: t
			}
		}, i[50] = function(e) {
			var t = e.getAttribute("fleet");
			return !!t && {
				mod: "fleetcallback",
				fleet_key: t
			}
		}, i[51] = function(e) {
			var t = e.getAttribute("fleet");
			return !!t && (l.flags.templateLoaded.union ? l.template["union-invite"]({}) : (d.template("union-invite", {}), l.flags.templateLoaded.union = !0), l.flags.floatDivShow = !0, l.flags.unionFleetKey = t, o.getElementById("float-title")
				.innerHTML = r.unionattack, o.getElementById("float")
				.className = "float-union-invite", o.getElementById("mask")
				.className = "", {
					mod: "fleetunion",
					fleet_key: t
				})
		}, i[52] = function(e) {
			return d.hideFloatLayer(), !1
		}, i[53] = function(e) {
			var t = {};
			return t.image = 1 === l.planet.planet_type ? l.planet.image + "_6" : "/moon/" + l.planet.image + "_3", t.planet = "[" + l.planet.position + "] &nbsp;&nbsp;&nbsp;&nbsp;" + l.planet.planetname, t.isMain = l.planet.is_primary_planet, l.flags.templateLoaded.rename ? l.template.rename(t) : (d.template("rename", t), l.flags.templateLoaded.rename = !0), d.showFloatLayer(r.renamegiveup, "float-rename"), !1
		}, i[54] = function(e) {
			var t = o.getElementById("new-planet-name")
				.value;
			return "" !== t && (l.checkEvilStr(t) ? (l.fadebox(r.err23), !1) : {
				mod: "planetrename",
				name: t
			})
		}, i[55] = function(e) {
			return l.confirmbox(r.str123, function() {
				l.send({
					mod: "planetgiveup",
					xid: 0
				})
			}), !1
		}, i[56] = function(e) {
			return l.flags.templateLoaded.friends ? l.template.friends({}) : (d.template("friends", {}), l.flags.templateLoaded.friends = !0), d.showFloatLayer(r.str6, "float-friends"), {
				mod: "friendlist",
				xid: 0,
				page: 1
			}
		}, i[57] = function(e) {
			var t = e.getAttribute("uid");
			return !!t && {
				mod: "frienddel",
				xid: 0,
				fuid: t
			}
		}, i[58] = function(e) {
			var t = e.getAttribute("oid");
			return $("#friends-tabs li")
				.removeClass("on"), $("#friends-tabs li[oid=" + t + "]")
				.addClass("on"), "0" === t ? {
					mod: "friendlist",
					xid: 0,
					page: 1
				} : "1" === t ? {
					mod: "friendreq",
					xid: 0,
					page: 1
				} : "2" === t && {
					mod: "friendinvite",
					xid: 0
				}
		}, i[59] = function(e) {
			var t = e.getAttribute("uid");
			return !!t && {
				mod: "friendaccept",
				xid: 0,
				fuid: t
			}
		}, i[60] = function(e) {
			var t = e.getAttribute("uid");
			return !!t && {
				mod: "friendrefuse",
				xid: 0,
				fuid: t
			}
		}, i[61] = function(e) {
			return -1 < e.className.indexOf("item-selected") ? e.className = "union-invite-item" : e.className = "union-invite-item item-selected", !1
		}, i[62] = function(e) {
			var n = $("#union-invite-users .union-invite-item")
				.length,
				i = "";
			return $("#union-invite-friends .item-selected")
				.each(function(e, t) {
					5 <= n || (i += "<div actid='61' uid='" + t.getAttribute("uid") + "' class='union-invite-item'>" + t.innerHTML + "</div>", $(t)
						.remove(), n++)
				}), "" !== i && (o.getElementById("union-invite-users")
					.innerHTML += i), !1
		}, i[63] = function(e) {
			var n = "";
			return $("#union-invite-users .item-selected")
				.each(function(e, t) {
					n += "<div actid='61' uid='" + t.getAttribute("uid") + "' class='union-invite-item'>" + t.innerHTML + "</div>", $(t)
						.remove()
				}), "" !== n && (o.getElementById("union-invite-friends")
					.innerHTML += n), !1
		}, i[64] = function(e) {
			var t = o.getElementById("union-search")
				.value;
			return "" !== t && {
				mod: "search",
				xid: 10,
				player: t
			}
		}, i[65] = function(e) {
			var t = o.getElementById("union-alias")
				.value;
			if ("" === t) return l.fadebox(r.err1014), !1;
			if (l.checkEvilStr(t)) return l.fadebox(r.err1017), !1;
			var n = [];
			return $("#union-invite-users .union-invite-item")
				.each(function(e, t) {
					n.push(t.getAttribute("uid"))
				}), {
					mod: "fleetunion",
					xid: 1,
					fleet_key: l.flags.unionFleetKey,
					alias: t,
					fuids: n.join("|")
				}
		}, i[66] = function(e) {
			var t = o.getElementById("alliance-name")
				.value;
			return "" === t ? (l.fadebox(r.err1023), !1) : t.lenth < 3 || 8 < t.length ? (l.fadebox(r.err1024), !1) : l.checkEvilStr(t) ? (l.fadebox(r.err1022), !1) : l.planet.m34 < 2 ? (l.fadebox(r.err1020), !1) : {
				mod: "alliancecreate",
				xid: 0,
				name: t
			}
		}, i[67] = function(e) {
			return l.flags.templateLoaded.highscore ? l.template.highscore({}) : (d.template("highscore", {}), l.flags.templateLoaded.highscore = !0), d.menuDivChange(e), {
				mod: "highscore",
				xid: 0
			}
		}, i[68] = function(e) {
			var t = 1,
				n = e.getAttribute("tab");
			"player" === n || "alliance" === n ? n !== l.flags.highscoreCate && (o.getElementById("highscore-type-" + l.flags.highscoreCate)
				.className = "", l.flags.highscoreCate = n, o.getElementById("highscore-type-" + n)
				.className = "highscore-on") : n ? n !== l.flags.highscoreType && (o.getElementById("highscore-type-" + l.flags.highscoreType)
				.className = "", l.flags.highscoreType = n, o.getElementById("highscore-type-" + n)
				.className = "highscore-on") : t = e.getAttribute("page");
			var i = {
					player: {
						point: 0,
						tech: 1,
						fleet: 2
					},
					alliance: {
						point: 5,
						tech: 6,
						fleet: 7
					}
				},
				s = i[l.flags.highscoreCate][l.flags.highscoreType];
			return o.getElementById("hiscore-content-headline")
				.innerHTML = r["hstitle" + s], {
					mod: "highscore",
					xid: i[l.flags.highscoreCate][l.flags.highscoreType],
					page: t
				}
		}, i[69] = function(e) {}, i[70] = function(e) {
			var t = e.getAttribute("aid");
			return !!t && {
				mod: "allianceinfo",
				xid: 0,
				aid: t
			}
		}, i[71] = function(e) {
			var t = e.getAttribute("uid");
			return !!t && {
				mod: "friendapply",
				fuid: t
			}
		}, i[72] = function(e) {
			var t = o.getElementById("alliancecover");
			t.style.display = "none", t.innerHTML = ""
		}, i[73] = function(e) {
			return l.flags.templateLoaded.search ? l.template.search({}) : (d.template("search", {}), l.flags.templateLoaded.search = !0), l.flags.searchType = 1, d.showFloatLayer(r.search, "float-friends"), !1
		}, i[74] = function(e) {
			return d.search()
		}, i[75] = function(e) {
			var t = e.getAttribute("oid");
			return $("#search-tabs li")
				.removeClass("on"), $("#search-tabs li[oid=" + t + "]")
				.addClass("on"), l.flags.searchType = t, d.search()
		}, i[76] = function(e) {
			var t = e.getAttribute("tbl");
			return $("#alliance-tabs div")
				.attr("class", "content-tab"), e.className = "content-tab-on", $("#content-alliance-home, #content-alliance-members, #content-alliance-apply, #content-alliance-forum")
				.hide(), $("#content-alliance-" + t)
				.show(), "home" === t ? {
					mod: "allianceinfo",
					xid: 2
				} : "members" === t ? {
					mod: "alliancemembers",
					xid: 0,
					page: 1
				} : "apply" === t ? {
					mod: "allianceapplicant",
					xid: 0,
					page: 1
				} : "forum" === t && {
					mod: "allianceforum",
					xid: 0,
					page: 1
				}
		}, i[77] = function(e) {
			if (1 == l.flags.allianceRole) {
				e.style.display = "none";
				var t = e.id.replace("alliance-icon-", "");
				o.getElementById("alliance-edit-" + t + "-val")
					.value = o.getElementById("alliance-show-" + t)
					.innerHTML.replace(/<br>/g, "\n"), o.getElementById("alliance-edit-" + t)
					.style.display = "inline", o.getElementById("alliance-show-" + t)
					.style.display = "none"
			}
			return !1
		}, i[78] = function(e) {
			var t = e.getAttribute("item"),
				n = o.getElementById("alliance-edit-" + t + "-val")
				.value;
			return "name" === t ? {
				mod: "allianceedit",
				xid: 1,
				name: n
			} : "joinpoint" === t ? {
				mod: "allianceedit",
				xid: 2,
				point: n
			} : "attackpoint" === t ? {
				mod: "allianceedit",
				xid: 4,
				point: n
			} : "shieldpoint" === t ? {
				mod: "allianceedit",
				xid: 5,
				point: n
			} : "structpoint" === t ? {
				mod: "allianceedit",
				xid: 6,
				point: n
			} : "desc" === t && {
				mod: "allianceedit",
				xid: 8,
				desc: n
			}
		}, i[79] = function(e) {
			var t = e.getAttribute("item");
			return o.getElementById("alliance-edit-" + t)
				.style.display = "none", o.getElementById("alliance-show-" + t)
				.style.display = "inline", !(o.getElementById("alliance-icon-" + t)
					.style.display = "inline")
		}, i[80] = function(e) {
			return {
				mod: "allianceedit",
				xid: 3
			}
		}, i[81] = function(e) {
			return l.confirmbox(1 == l.flags.allianceRole ? r.str57 : r.str58, function() {
				l.send({
					mod: "alliancequit",
					xid: 0
				})
			}), !1
		}, i[82] = function(e) {
			var t = parseInt(e.getAttribute("page"), 10);
			if (0 < t) return {
				mod: "alliancemembers",
				xid: 0,
				page: t
			}
		}, i[83] = function(e) {
			if (1 === l.flags.allianceRole) {
				var t = e.getAttribute("uid"),
					n = e.getAttribute("user");
				if (t) return l.confirmbox(r.str60 + " (" + n + ")", function() {
					l.send({
						mod: "alliancekick",
						xid: 0,
						auid: t
					})
				}), !1
			}
		}, i[84] = function(e) {
			if (1 === l.flags.allianceRole) {
				var t = e.getAttribute("uid"),
					n = e.getAttribute("user");
				if (t) return l.confirmbox(r.str63 + " (" + n + ")", function() {
					l.send({
						mod: "alliancemaster",
						xid: 0,
						auid: t
					})
				}), !1
			}
		}, i[85] = function(e) {
			if (1 === l.flags.allianceRole) {
				var t = e.getAttribute("uid"),
					n = e.getAttribute("user");
				if (t) return l.confirmbox(r.str66 + " (" + n + ")", function() {
					l.send({
						mod: "alliancemaster",
						xid: 1,
						auid: t
					})
				}), !1
			}
		}, i[86] = function(e) {
			return {
				mod: "alliancejoin",
				xid: 0,
				aid: e.getAttribute("aid")
			}
		}, i[87] = function(e) {
			var t = parseInt(e.getAttribute("page"), 10);
			if (0 < t) return {
				mod: "allianceapplicant",
				xid: 0,
				page: t
			}
		}, i[88] = function(e) {
			var t = e.getAttribute("uid");
			return {
				mod: "alliancemaster",
				xid: e.getAttribute("xid"),
				auid: t
			}
		}, i[89] = function(e) {
			var t = e.getAttribute("position")
				.split(":"),
				n = l.planet.movecount && 0 < l.planet.movecount ? r.str141 : r.str89;
			return l.confirmbox(n, function() {
				l.send({
					mod: "planetmove",
					target_galaxy: t[0],
					target_system: t[1],
					target_planet: t[2]
				})
			}), !1
		}, i[90] = function(e) {
			var t = l.flags.fleetMission;
			return t.targetPosition = e.getAttribute("position")
				.split(":"), t.targetType = e.getAttribute("planettype"), t.mission = e.getAttribute("mission"), i[8](o.getElementById("fleet")), !1
		}, i[91] = function(e) {
			var t = {
				lang: r,
				spynum: l.planet.spynum,
				animation: l.planet.animate,
				backmsg: l.planet.backmsg,
				holiday: l.planet.holiday_date,
				holiday_cancel: l.planet.holiday_cancel
			};
			l.flags.templateLoaded.setup ? l.template.setup(t) : (d.template("setup", t), l.flags.templateLoaded.setup = !0), d.showFloatLayer(r.setup, "float-setup")
		}, i[92] = function(e) {
			var t = o.getElementById("setup-spy-number")
				.value;
			if (!d.numberCheck(t)) return l.fadebox(r.err25), !1;
			l.planet.spynum = t;
			var n = 0;
			o.getElementById("setup-animate")
				.checked ? (n = 1, l.flags.animateShow = !0, d.animateDomInit(!0)) : (l.flags.animateShow = !1, d.animateDomInit(!1));
			var i = 0;
			o.getElementById("setup-backmsg")
				.checked && (i = 1), l.planet.backmsg = i;
			var s = -1;
			return (e = o.getElementById("setup-holiday")) && (s = e.checked ? 1 : 0), {
				mod: "setup",
				xid: 0,
				sn: t,
				an: n,
				hd: s,
				bm: i
			}
		}, i[93] = function(e) {
			var t = l.flags.buildingInfoId;
			return 0 < t && {
				mod: "planet",
				build_id: t,
				build_count: -1,
				xid: 2
			}
		}, i[94] = function(e) {
			var t = e.getAttribute("position")
				.split(":");
			return {
				mod: "phalanx",
				galaxy: t[0],
				system: t[1],
				planet: t[2],
				planet_type: t[3]
			}
		}, i[95] = function(e) {
			return 43 === l.flags.buildingInfoId && {
				mod: "jumpgate",
				xid: 0
			}
		}, i[96] = function(e) {
			var t = l.planet.ship;
			for (var n in t) 212 != n && 0 < t[n] && (o.getElementById("jumpgate-count-" + n)
				.value = t[n]);
			return !1
		}, i[97] = function(e) {
			for (var t in l.planet.ship) 212 != t && (o.getElementById("jumpgate-count-" + t)
				.value = "");
			return !1
		}, i[98] = function(e) {
			var t = o.getElementById("jumpgate-target-moon")
				.value;
			if (!t) return l.fadebox(r.err27), !1;
			var n = d.getShipCount("jumpgate");
			return 0 < n.count && (d.shipToStr(n), {
				mod: "jumpgate",
				xid: 1,
				fleets: d.shipToStr(n),
				target_pid: t
			})
		}, i[99] = function(e) {
			var t = e.getAttribute("bid"),
				n = l.planet.ship;
			return 0 < n[t] && (o.getElementById("jumpgate-count-" + t)
				.value = n[t]), !1
		}, i[100] = function(e) {
			return n(parseInt(e.getAttribute("oid"), 10)), !1
		}, i[101] = function(e) {
			return l.hideBuildingInfo(), !1
		}, i[102] = function(e) {
			if (0 !== l.flags.officerInfoId) {
				var t = -1 < e.id.indexOf("-buy1") ? 1 : 2;
				return {
					mod: "officer",
					xid: 0,
					oid: l.flags.officerInfoId,
					buytime: t
				}
			}
			var n = {
				uid: l.planet.uid,
				server: serverID
			};
			return l.flags.templateLoaded.payment ? l.template.payment(n) : (d.template("payment", n), l.flags.templateLoaded.payment = !0), d.showFloatLayer(r.payment, "float-rename"), !1
		}, i[103] = function(e) {
			if (i[11](o.getElementById("officer")), "resource-darkmatter-icon" === e.id) var t = 0;
			else t = parseInt(e.id.replace("officer", ""), 10);
			return n(t), !1
		}, i[104] = function(e) {
			return l.confirmFunc = function() {
				l.send({
					mod: "cost",
					xid: 0,
					did: 1
				})
			}, {
				mod: "cost",
				xid: 0,
				did: 0
			}
		}, i[105] = function(e) {
			var t = e.getAttribute("btype");
			return l.confirmFunc = function() {
				l.send({
					mod: "cost",
					xid: 1,
					did: 1,
					btype: t
				})
			}, {
				mod: "cost",
				xid: 1,
				did: 0,
				btype: t
			}
		}, i[106] = function(e) {
			if (1 === l.planet.planet_type) return {
				mod: "cost",
				xid: 2,
				did: 0,
				res: e.getAttribute("res")
			}
		}, i[107] = function(e) {
			return 0 < l.aid && {
				mod: "cost",
				xid: 3,
				did: 0
			}
		}, i[108] = function(e) {
			var t = {
				lang: r
			};
			return l.flags.templateLoaded.tutorial ? l.template.tutorial(t) : (d.template("tutorial", t), l.flags.templateLoaded.tutorial = !0), d.menuDivChange(e), {
				mod: "tutorial",
				xid: 1
			}
		}, i[109] = function(e) {
			return {
				mod: "tutorial",
				xid: e.getAttribute("tid")
			}
		}, i[110] = function(e) {
			var t = o.getElementById("page_refer")
				.value;
			return !!t && {
				mod: "tutorial",
				xid: 100,
				url: t
			}
		}, i[111] = function(e) {
			return {
				mod: "planet",
				build_id: e.getAttribute("bid"),
				build_count: 1,
				xid: 2
			}
		}, i[112] = function(e) {
			return !(o.getElementById("galaxy-tips")
				.style.display = "none")
		}, i[113] = function(e) {
			return {
				mod: "buildingdata",
				xid: 0,
				bid: l.flags.buildingInfoId
			}
		}, i[114] = function(e) {
			var t = e.getAttribute("oid");
			$("#building-data-tabs li")
				.removeClass("on"), $("#building-data-tabs li[oid=" + t + "]")
				.addClass("on");
			for (var n = 1; n <= 3; n++) o.getElementById("building-data-div" + n)
				.style.display = n == t ? "block" : "none";
			return !1
		}, i[115] = function(e) {
			return l.flags.templateLoaded.friends ? l.template.friends({}) : (d.template("friends", {}), l.flags.templateLoaded.friends = !0), d.showFloatLayer(r.str6, "float-friends"), $("#friends-tabs li")
				.removeClass("on"), $("#friends-tabs li[oid=2]")
				.addClass("on"), {
					mod: "friendinvite",
					xid: 0
				}
		}, i[116] = function(e) {
			var t = {
				uid: l.planet.uid,
				server: serverID
			};
			return l.flags.templateLoaded.payment ? l.template.payment(t) : (d.template("payment", t), l.flags.templateLoaded.payment = !0), d.showFloatLayer(r.payment, "float-rename"), !1
		}, i[117] = function(e) {
			return {
				mod: "productivity",
				xid: 0
			}
		}, i[118] = function(e) {
			return {
				mod: "productivity",
				xid: 1,
				m1: o.getElementById("m1percent")
					.value,
				m2: o.getElementById("m2percent")
					.value,
				m3: o.getElementById("m3percent")
					.value,
				m4: o.getElementById("m4percent")
					.value,
				m12: o.getElementById("m12percent")
					.value,
				m212: o.getElementById("m212percent")
					.value
			}
		}, i[119] = function(e) {
			return {
				mod: "battlereport",
				xid: 0,
				fleet_key: e.getAttribute("fleet_key")
			}
		}, i[120] = function(e) {
			return $("#fleet-step1 input.fleet-item-value")
				.each(function(e, t) {
					var n = o.getElementById(t.id.replace("ship-", "fleet-item-"))
						.innerHTML;
					this.value = "0" !== n ? n : ""
				}), !1
		}, i[121] = function(e) {
			return $("#fleet-step1 input.fleet-item-value")
				.val(""), !1
		}, i[122] = function(e) {
			for (var t = ["metal", "crystal", "deuterium"], n = l.flags.fleetMission.storage, i = 0; i < 3; i++) {
				var s = Math.min(n, l.planet[t[i]]);
				if (n -= s, o.getElementById("fleet-resource-" + t[i])
					.value = s, n <= 0) break
			}
			return d.updateResourceLoad(), !1
		}, i[123] = function(e) {
			return {
				mod: "freeresource",
				xid: 0
			}
		}
	}(),
	function() {
		var g = window.SNS,
			h = g.lang,
			y = g.util,
			v = document;
		g.handle = {}, hdl = g.handle, locz = function(e) {
			var t = e.match(/\{%(.*?)%\}/g);
			if (t && 0 < t.length)
				for (var n = 0; n < t.length; n++) {
					var i = t[n].replace("{%", "")
						.replace("%}", "");
					h[i] && (e = e.replace(t[n], h[i]))
				}
			return e
		}, fillEventTableRow = function(e, t) {
			var n = "";
			1 === e.return ? n = "(" + h.fleetret + ")" : 1 === e.defensing ? n = "(" + h.str92 + ")" : 1 === e.expeding && (n = "(" + h.str93 + ")");
			var i = "";
			for (var s in i += "<div class=gray>" + h.fleetdet + "</div>", e.fleet_data) i += h["m" + s] + " : " + e.fleet_data[s] + "<br />";
			(0 < e.metal || 0 < e.crystal || 0 < e.deuterium) && (i += "<br />", 0 < e.metal && (i += h.metal + ": " + e.metal + "<br />"), 0 < e.crystal && (i += h.crystal + ": " + e.crystal + "<br />"), 0 < e.deuterium && (i += h.deuterium + ": " + e.deuterium + "<br />"));
			var r = "<tbody class='fleet-row-body" + t % 2 + "'><tr>";
			if (r += "<td tips='" + h.str156 + ": " + e.now_arrival_time + (e.now_back_time ? "<br>" + h.str157 + ": " + e.now_back_time : "") + "' class='fleet-event-timer " + (e.is_friend ? "o1" : e.is_enemy ? "red" : "g1") + "' id='" + e.key + "'></td>", r += "<td class='fleet-event-mission'>" + h["miss" + e.mission] + n + "</td>", r += "<td actid='36' position='" + e.start_position.join(":") + "' class='fleet-event-position link'>" + e.start_planetname + " [" + e.start_position.join(":") + "]</td>", r += "<td >" + e.fleet_amount + "</td>", r += "<td ><img class='fleet-event-icon' tips='" + i + "' src='img/icon-fleet-" + e.direction + ".gif' />&nbsp;&nbsp;</td>", r += "<td actid='36' position='" + e.target_position.join(":") + "' class='fleet-event-position link'>" + e.target_planetname + " [" + e.target_position.join(":") + "]</td>", r += "<td width='17px'>" + (e.cancall ? "<img actid='50' fleet='" + e.key + "' class='hand fleet-event-icon' src='img/icons/recall.gif' tips='" + h.recall + "' />" : "") + (e.canmsg ? "<img actid='45' user='" + e.start_username + "' class='hand fleet-event-icon' src='img/icons/mail.gif' tips='" + h.sendmsg + "' />" : "") + "</td>", r += "<td width='17px'>" + (e.canunion ? "<img actid='51' fleet='" + e.key + "' class='hand fleet-event-icon' src='img/icons/allianceattack.gif' tips='" + h.unionattack + "' />" : "&nbsp;") + "</td>", r += "</tr>", e.union_fleets && 0 < e.union_fleets.length)
				for (s = 0; s < e.union_fleets.length; s++) {
					for (var a in i = "", i += "<div class=gray>" + h.fleetdet + "</div>", e.union_fleets[s].fleet_data) i += h["m" + a] + " : " + e.union_fleets[s].fleet_data[a] + "<br />";
					r += "<td class='fleet-event-timer' id='" + e.union_fleets[s].key + "'></td>", r += "<td class='fleet-event-mission'>" + h["miss" + e.union_fleets[s].mission] + (1 == e.union_fleets[s].return ? "(" + h.fleetret + ")" : "") + "</td>", r += "<td actid='36' position='" + e.union_fleets[s].start_position.join(":") + "' class='fleet-event-position link'>" + e.start_planetname + " [" + e.start_position.join(":") + "]</td>", r += "<td >" + e.union_fleets[s].fleet_amount + "</td>", r += "<td ><img class='fleet-event-icon' tips='" + i + "' src='img/icon-fleet-1.gif' />&nbsp;&nbsp;</td>", r += "<td actid='36' position='" + e.union_fleets[s].target_position.join(":") + "' class='fleet-event-position link'>" + e.union_fleets[s].target_planetname + " [" + e.union_fleets[s].target_position.join(":") + "]</td>", r += "<td width='17px'>" + (e.union_fleets[s].cancall ? "<img actid='50' fleet='" + e.union_fleets[s].key + "' class='hand fleet-event-icon' src='img/icons/recall.gif' tips='" + h.recall + "' />" : "&nbsp;") + "</td>", r += "<td width='17px'>" + (e.union_fleets[s].cancall && 1 == e.union_fleets[s].mission ? "<img actid='51' fleet='" + e.union_fleets[s].key + "' class='hand fleet-event-icon' src='img/icons/allianceattack.gif' tips='" + h.unionattack + "' />" : "&nbsp;") + "</td>", r += "</tr>"
				}
			return r + "</tbody>"
		}, fillPhalanxTableRow = function(e, t) {
			var n = "";
			1 === e.return ? n = "(" + h.fleetret + ")" : 1 === e.defensing ? n = "(" + h.str92 + ")" : 1 === e.expeding && (n = "(" + h.str93 + ")");
			var i = "";
			for (var s in i += "<div class=gray>" + h.fleetdet + "</div>", e.fleet_data) i += h["m" + s] + " : " + e.fleet_data[s] + "<br />";
			var r = "<tbody class='fleet-row-body" + t % 2 + "'><tr>";
			return r += "<td class='fleet-event-timer' id='phalanx-" + e.key + "' tips='" + h.str156 + ": " + e.now_arrival_time + "'></td>", r += "<td class='fleet-event-mission'>" + h["miss" + e.mission] + n + "</td>", r += "<td actid='36' position='" + e.start_position.join(":") + "' class='fleet-event-position link'>" + e.start_planetname + " [" + e.start_position.join(":") + "]</td>", r += "<td >" + e.fleet_amount + "</td>", r += "<td ><img class='fleet-event-icon' tips='" + i + "' src='img/icon-fleet-" + e.direction + ".gif' />&nbsp;&nbsp;</td>", r += "<td actid='36' position='" + e.target_position.join(":") + "' class='fleet-event-position link'>" + e.target_planetname + " [" + e.target_position.join(":") + "]</td>", (r += "</tr>") + "</tbody>"
		}, tutorialStepHtml = function(e, t) {
			for (var n = "", i = "", s = 1; s <= 10; s++) i = t[s] ? "tutorial-step-item-done" : "tutorial-step-item", e == s && (i += " on"), n += "<div tips='" + h["tutorial" + s + "title"] + "' actid='109' tid='" + s + "' class='" + i + "'>" + s + "</div>";
			return n
		}, tutorialTaskHtml = function(e, t) {
			var n = "";
			for (var i in t) n += "<li>" + h["tutorial" + e + "task" + i] + " " + (t[i] ? "<div class='done-img'></div>" : "") + "</li>";
			return n
		}, holidayTips = function(e) {
			if ("" != e) {
				var t = '<img src="img/holiday.gif" tips="' + h.vacation + "<hr size=1>" + h.str138 + " " + e + " " + h.str139 + '" />';
				v.getElementById("advice")
					.innerHTML = t
			}
		}, tutorialStart = function(e) {
			if (0 == e) {
				var t = document.createElement("script");
				t.type = "text/javascript", t.async = !0, t.src = "./js/tutorial.js";
				var n = document.getElementsByTagName("script")[0];
				n.parentNode.insertBefore(t, n)
			}
		}, hdl.planet = function(e) {
			g.serverTime = e.msg.time, g.uid = e.msg.planet.uid, g.pid = e.msg.planet.pid, g.aid = e.msg.planet.aid;
			var t = e.msg.planet.metal != g.planet.metal,
				n = e.msg.planet.crystal != g.planet.crystal,
				i = e.msg.planet.deuterium != g.planet.deuterium,
				s = e.msg.planet.money != g.planet.money;
			e.msg.planet.energy, g.planet.energy, g.planet = e.msg.planet;
			var r = {},
				a = "";
			if (r["resource-metal-amount"] = {}, r["resource-metal-amount"].innerHTML = y.numberFormat(e.msg.planet.metal), r["resource-metal-amount"].className = y.getResourceClass(e.msg.planet.metal, e.msg.planet.metal_max) + (t ? " resource-changed" : ""), r["resource-crystal-amount"] = {}, r["resource-crystal-amount"].innerHTML = y.numberFormat(e.msg.planet.crystal), r["resource-crystal-amount"].className = y.getResourceClass(e.msg.planet.crystal, e.msg.planet.crystal_max) + (n ? " resource-changed" : ""), r["resource-deuterium-amount"] = {}, r["resource-deuterium-amount"].innerHTML = y.numberFormat(e.msg.planet.deuterium), r["resource-deuterium-amount"].className = y.getResourceClass(e.msg.planet.deuterium, e.msg.planet.deuterium_max) + (i ? " resource-changed" : ""), r["resource-darkmatter-amount"] = {}, r["resource-darkmatter-amount"].innerHTML = y.numberFormat(e.msg.planet.money), r["resource-darkmatter-amount"].className = s ? " resource-changed" : "", r["resource-energy-amount"] = {}, r["resource-energy-amount"].innerHTML = y.numberFormat(e.msg.planet.energy), r["resource-energy-amount"].className = e.msg.planet.energy < 0 ? "overmark" : "", r["resource-metal-icon"] = {}, a = 0 < e.msg.planet.metal_product_plus ? "<span class='g1'>(+" + e.msg.planet.metal_product_plus + ")</span>" : "", r["resource-metal-icon"].tips = h.metal + "<hr size=1><table><tr><td width='70px'>" + h.nowhave + ":</td><td align='right'>" + e.msg.planet.metal + "</td></tr><tr><td>" + h.capacity + ":</td><td align='right'>" + e.msg.planet.metal_max + "</td></tr><tr><td>" + h.production + ":</td><td align='right'>" + e.msg.planet.metal_product_all + a + "</td></tr><tr><td>" + h.protectwarehouse + ":</td><td align='right' class='middlemark'>" + e.msg.planet.hidden_resource + "</td></tr></table>", r["resource-crystal-icon"] = {}, a = 0 < e.msg.planet.crystal_product_plus ? "<span class='g1'>(+" + e.msg.planet.crystal_product_plus + ")</span>" : "", r["resource-crystal-icon"].tips = h.crystal + "<hr size=1><table><tr><td width='70px'>" + h.nowhave + ":</td><td align='right'>" + e.msg.planet.crystal + "</td></tr><tr><td>" + h.capacity + ":</td><td align='right'>" + e.msg.planet.crystal_max + "</td></tr><tr><td>" + h.production + ":</td><td align='right'>" + e.msg.planet.crystal_product_all + a + "</td></tr><tr><td>" + h.protectwarehouse + ":</td><td align='right' class='middlemark'>" + e.msg.planet.hidden_resource + "</td></tr></table>", r["resource-deuterium-icon"] = {}, a = 0 < e.msg.planet.deuterium_product_plus ? "<span class='g1'>(+" + e.msg.planet.deuterium_product_plus + ")</span>" : "", r["resource-deuterium-icon"].tips = h.deuterium + "<hr size=1><table><tr><td width='70px'>" + h.nowhave + ":</td><td align='right'>" + e.msg.planet.deuterium + "</td></tr><tr><td>" + h.capacity + ":</td><td align='right'>" + e.msg.planet.deuterium_max + "</td></tr><tr><td>" + h.production + ":</td><td align='right'>" + e.msg.planet.deuterium_product_real + a + "</td></tr><tr><td>" + h.protectwarehouse + ":</td><td align='right' class='middlemark'>" + e.msg.planet.hidden_resource + "</td></tr></table>", r["resource-darkmatter-icon"] = {}, r["resource-darkmatter-icon"].tips = h.darkmatter + "<hr size=1>" + h.nowhave + ":" + e.msg.planet.money, r["resource-energy-icon"] = {}, a = 0 < e.msg.planet.energy_product_plus ? "<span class='g1'>(+" + e.msg.planet.energy_product_plus + ")</span>" : "", r["resource-energy-icon"].tips = h.energy + "<hr size=1><table><tr><td width='70px'>" + h.nowhave + ":</td><td align='right'>" + e.msg.planet.energy + "</td></tr><tr><td>" + h.production + ":</td><td align='right'>" + e.msg.planet.energy_product_all + a + "</td></tr><tr><td>" + h.consume + ":</td><td align='right'>" + e.msg.planet.energy_consume_all + "</td></tr><tr><td>" + h.prorate + ":</td><td align='right'>" + e.msg.planet.product_rate + "%</td></tr></table>", g.setDom(r), g.building[210]) var l = g.building[210].count;
			if (g.building[209]) var o = g.building[209].count;
			for (var d in e.msg.planet.building) g.building[d] = {
				type: 1,
				count: e.msg.planet.building[d]
			};
			for (var d in e.msg.planet.tech) g.building[d] = {
				type: 2,
				count: e.msg.planet.tech[d]
			};
			for (var d in e.msg.planet.ship) g.building[d] = {
				type: 3,
				count: e.msg.planet.ship[d]
			};
			for (var d in e.msg.planet.defense) g.building[d] = {
				type: 4,
				count: e.msg.planet.defense[d]
			};
			g.flags.animateShow = 1 == e.msg.planet.animate;
			for (var u = g.flags.officerExpire, c = 1; c <= 5; c++)
				if (u[c] !== e.msg.planet.officer[c].expire) {
					u[c] = e.msg.planet.officer[c].expire;
					var f = v.getElementById("officer" + c);
					0 < u[c] ? (f.className = "officer" + c + "-s2", f.setAttribute("tips", h["officer" + c] + " <span class='g1'>" + g.getDate(u[c], !0) + "</span><hr size=1>" + h["officer" + c + "effect"])) : (f.className = "officer" + c + "-s1", f.setAttribute("tips", h["officer" + c] + "<hr size=1>" + h["officer" + c + "effect"]))
				} if (g.flags.templateLoaded.galaxy && (l != g.building[210].count && (v.getElementById("galaxy-fleet-spy")
				.innerHTML = g.building[210].count), o != g.building[209].count && (v.getElementById("galaxy-fleet-recycle")
				.innerHTML = g.building[209].count)), e.xid < 0) {
				g.setHTML({
						"player-name": e.msg.planet.username,
						"overview-title": e.msg.planet.planetname,
						"diameter-data": "<span class='link' actid='104' tips='" + h.fieldtips + "'>" + e.msg.planet.diameter + "Km (" + e.msg.planet.field_used + "/" + e.msg.planet.field_max + ")</span>",
						"temperature-data": e.msg.planet.tempmin + "°C - " + (e.msg.planet.tempmin + 40) + "°C",
						"coordinate-data": "[" + e.msg.planet.position + "]",
						"points-data": e.msg.planet.point + " (" + h.rank + ": " + e.msg.planet.rank + ")",
						"giveup-rename": e.msg.planet.is_primary_planet ? h.rename : h.renamegiveup
					}), 1 === e.msg.planet.planet_type ? v.getElementById("overview-planet")
					.style.backgroundImage = "url(img/planets/header/header_" + e.msg.planet.image.split("_")[0] + ".jpg)" : v.getElementById("overview-planet")
					.style.backgroundImage = "url(img/planets/header/" + e.msg.planet.image + ".jpg)", y.initBuildingDom(e.msg.planet);
				var p = v.getElementById("overview-planet-another");
				p.style.display = "none", e.msg.planet.have_another && (p.style.display = "block", 1 === e.msg.planet.planet_type ? (p.className = "another-moon", p.style.backgroundImage = "url(img/planets/large/" + e.msg.planet.moonimage + ".gif)", p.setAttribute("pid", e.msg.planet.moonid), p.setAttribute("tips", h.str94)) : (p.className = "another-planet", p.style.backgroundImage = "url(img/planets/large/" + e.msg.planet.planetimage.split("_")[0] + ".jpg)", p.setAttribute("pid", e.msg.planet.planetid), p.setAttribute("tips", h.str95))), -3 === e.xid ? (0 < g.flags.clockTimerId && clearInterval(g.flags.clockTimerId), g.flags.clockTimerId = setInterval(g.clock, 1e3)) : -2 === e.xid ? (g.fadebox(h.planetchange + ": " + e.msg.planet.planetname), g.getPlanetList(), -1 < "station research shipyard defense fleet galaxy".indexOf(g.flags.menuLastId) && v.getElementById(g.flags.menuLastId)
					.click()) : -1 === e.xid ? (g.getFleetEvent(), g.getPlanetList(), g.config.galaxyMax = e.msg.config.galaxy, g.config.systemMax = e.msg.config.system, holidayTips(e.msg.planet.holiday_date), tutorialStart(e.msg.planet.tutorial), y.animateDomInit(g.flags.animateShow)) : -4 === e.xid ? (g.getPlanetList(), g.send({
					mod: "galaxy",
					xid: 0,
					galaxy: g.flags.galaxyGalaxy,
					system: g.flags.galaxySystem
				})) : -5 === e.xid && g.click[11](v.getElementById("officer"))
			} else if (0 === e.xid);
			else if (2 === e.xid) {
				var m = {
					station: 1,
					research: 2,
					shipyard: 3,
					defense: 4
				} [g.flags.menuLastId];
				g.send({
					mod: "building",
					xid: m,
					type: m
				}), g.hide("building-info"), g.flags.buildingInfoId = 0
			} else e.xid
		}, hdl.queue = function(e) {
			if (e.xid < 0) setTimeout(function() {
				e.xid = 0, g.handle.queue(e)
			}, 300);
			else {
				for (var t in g.flags.buildingInQueue = {}, g.queueList = {}, e.msg.building) g.queueList[t] = e.msg.building[t], g.queueList[t].type = "building", g.flags.buildingInQueue[e.msg.building[t].bid] = !0;
				for (var t in e.msg.tech) g.queueList[t] = e.msg.tech[t], g.queueList[t].type = "tech", g.flags.buildingInQueue[e.msg.tech[t].bid] = !0;
				for (var t in e.msg.ship) g.queueList[t] = e.msg.ship[t], g.queueList[t].type = "ship", g.flags.buildingInQueue[e.msg.ship[t].bid] = !0;
				g.queueReset(), g.queueRender()
			}
		}, hdl.building = function(e) {
			var t = g.flags.buildingInQueue,
				n = e.msg.length;
			if (1 === e.xid)
				for (var i = 0; i < n; i++) {
					var s = e.msg[i].bid;
					e.msg[i].level !== g.building[s].precount && (v.getElementById("building-count-" + s)
						.innerHTML = e.msg[i].level, g.building[s].precount = e.msg[i].level), g.building[s].buildable && e.msg[i].buildable === g.building[s].buildable || (g.building[s].buildable = e.msg[i].buildable, v.getElementById("building-mask-" + s)
						.className = 0 === e.msg[i].buildable || t[s] ? "building-mask" : "building-mask opc50", v.getElementById("building-fast-" + s)
						.className = 0 === e.msg[i].buildable ? "building-fast-build" : "hidden")
				} else if (2 === e.xid)
					for (i = 0; i < n; i++) s = e.msg[i].bid, e.msg[i].level !== g.building[s].precount && (v.getElementById("building-count-" + s)
						.innerHTML = e.msg[i].level, g.building[s].precount = e.msg[i].level), g.building[s].buildable && e.msg[i].buildable === g.building[s].buildable || (g.building[s].buildable = e.msg[i].buildable, v.getElementById("building-mask-" + s)
						.className = 0 === e.msg[i].buildable || t[s] ? "building-mask" : "building-mask opc50", v.getElementById("building-fast-" + s)
						.className = 0 === e.msg[i].buildable ? "building-fast-build" : "hidden");
				else if (3 === e.xid)
				for (i = 0; i < n; i++) s = e.msg[i].bid, e.msg[i].level !== g.building[s].precount && (v.getElementById("building-count-" + s)
					.innerHTML = e.msg[i].level, g.building[s].precount = e.msg[i].level), g.building[s].buildable && e.msg[i].buildable === g.building[s].buildable || (g.building[s].buildable = e.msg[i].buildable, v.getElementById("building-mask-" + s)
					.className = 0 === e.msg[i].buildable || t[s] ? "building-mask" : "building-mask opc50");
			else if (4 === e.xid)
				for (i = 0; i < n; i++) s = e.msg[i].bid, e.msg[i].level !== g.building[s].precount && (v.getElementById("building-count-" + s)
					.innerHTML = e.msg[i].level, g.building[s].precount = e.msg[i].level), g.building[s].buildable && e.msg[i].buildable === g.building[s].buildable || (g.building[s].buildable = e.msg[i].buildable, v.getElementById("building-mask-" + s)
					.className = 0 === e.msg[i].buildable ? "building-mask" : "building-mask opc50");
			else if (10 === e.xid) {
				var r = {};
				r["building-info-time"] = (2 === g.building[e.msg[0].bid].type ? h.researchtime : h.buildtime) + ": " + g.parseTime(e.msg[0].time), r["building-info-cost"] = y.getBuildCostItem(e.msg[0]), r["building-info-tips"] = "", 0 < e.msg[0].buildable && (8 === e.msg[0].buildable ? r["building-info-tips"] = g.getPreCondition(e.msg[0].precondition) : r["building-info-tips"] = h["err" + e.msg[0].buildable]), e.msg[0].energy, 0 < e.msg[0].energycost && (r["building-info-time"] += "<br />" + h.energycost + ": " + e.msg[0].energycost), 0 < e.msg[0].energyprod && (r["building-info-time"] += "<br />" + h.energyprod + ": " + e.msg[0].energyprod), 0 < e.msg[0].energydelta && (r["building-info-time"] += " <span class='undermark'>(+" + e.msg[0].energydelta + ")</span>"), g.setHTML(r);
				var a = v.getElementById("building-info-upgrade");
				a.className = 0 === e.msg[0].buildable ? "build-ok" : "build-disable", a.setAttribute("actid", 0 === e.msg[0].buildable ? 14 : 0), a.innerHTML = 2 < g.building[e.msg[0].bid].type ? h.build : h.upgrade, e.msg[0].downable ? v.getElementById("building-info-downgrade")
					.style.display = "block" : v.getElementById("building-info-downgrade")
					.style.display = "none"
			}
		}, hdl.planetlist = function(e) {
			for (var t = "", n = "", i = e.msg.list.length, s = 0; s < i; s++) {
				if (e.msg.list[s].iscurrent) {
					n = "current";
					var r = e.msg.list[s].position.split(":");
					g.flags.galaxyGalaxy = parseInt(r[0]), g.flags.galaxySystem = parseInt(r[1])
				} else n = "";
				t += "<div actid='20' pid='" + e.msg.list[s].pid + "' class='planet-list-item " + n + "'><img actid='20' pid='" + e.msg.list[s].pid + "' src='img/planets/" + e.msg.list[s].image + "_" + (e.msg.list[s].iscurrent ? 2 : 1) + ".gif' class='planet-list-pic' />", t += 0 < e.msg.list[s].moonid ? "<div tips='" + e.msg.list[s].moonname + "' actid='20' pid='" + e.msg.list[s].moonid + "' class='planet-list-moon" + e.msg.list[s].moonimage + "'></div>" : "", t += "<div actid='20' pid='" + e.msg.list[s].pid + "' tips='" + e.msg.list[s].planetname + " [" + e.msg.list[s].position + "]<br />" + e.msg.list[s].diameter + "Km (" + e.msg.list[s].field_used + "/" + e.msg.list[s].field_max + ")<br />" + e.msg.list[s].tempmin + "°C - " + (e.msg.list[s].tempmin + 40) + "°C' class='planet-list-text'>" + e.msg.list[s].planetname + "<br />[" + e.msg.list[s].position + "]</div></div>"
			}
			v.getElementById("planet-list")
				.innerHTML = t, v.getElementById("planet-count")
				.innerHTML = e.msg.planet_count + "/" + e.msg.planet_count_max + h.planet
		}, hdl.galaxy = function(e) {
			e.msg.nodeut && g.fadebox(h.nodeuterium), v.getElementById("galaxy-galaxy-value")
				.value = e.msg.galaxy, v.getElementById("galaxy-system-value")
				.value = e.msg.system, g.flags.galaxyGalaxy = e.msg.galaxy, g.flags.galaxySystem = e.msg.system, e.msg.lang = h, e.msg.pid = g.planet.pid, g.flags.templateLoaded.galaxylist ? g.template["galaxy-list"](e.msg) : (y.template("galaxy-list", e.msg), g.flags.templateLoaded.galaxylist = !0)
		}, hdl.planetmove = function(e) {
			g.send({
				mod: "planet",
				xid: -4
			})
		}, hdl.planetgiveup = function(e) {
			y.hideFloatLayer(), g.queueReset(), g.send({
				mod: "planet",
				change_pid: e.msg.primary,
				xid: -2
			})
		}, hdl.event = function(e) {
			var t = g.flags;
			if (t.fleetLineUsed = e.msg.fleet_line_used, t.fleetLineMax = e.msg.fleet_line_max, t.expLineUsed = e.msg.expedition_line_used, t.expLineMax = e.msg.expedition_line_max, t.hasFleetEvent = !0, 0 < e.msg.enemy ? v.getElementById("attack-alert")
				.style.display = "block" : v.getElementById("attack-alert")
				.style.display = "none", g.flags.templateLoaded.galaxy && (v.getElementById("galaxy-fleet-line-used")
					.innerHTML = e.msg.fleet_line_used, v.getElementById("galaxy-exp-line-used")
					.innerHTML = e.msg.expedition_line_used), $("#table-event-list .fleet-event-timer")
				.each(function(e, t) {
					var n = t.id;
					g.countdown.instance[n] && (void 0 !== g.countdown.instance[n].dom && g.countdown.instance[n].clear(), delete g.countdown.instance[n])
				}), 0 == e.msg.mine && 0 == e.msg.enemy && 0 == e.msg.friend) return v.getElementById("fleet-event")
				.innerHTML = h.nofleets, $("#table-event-list")
				.html(""), void(t.hasFleetEvent = !1);
			var n = "<div actid='34' class='fleet-event-col g1'>" + h.fleets1 + ": " + e.msg.mine + "</div>";
			n += "<div actid='34' class='fleet-event-col o1'>" + h.fleets2 + ": " + e.msg.friend + "</div>", n += "<div actid='34' class='fleet-event-col red'>" + h.fleets3 + ": " + e.msg.enemy + "</div>", n += "<div actid='34' class='fleet-event-col' id='fleet-event-countdown'></div>", n += "<div actid='34' class='fleet-event-col' id='fleet-event-content'></div>", n += "<div actid='34' class='fleet-event-col' id='fleet-event-more'>", n += "<a id='fleet-show-more' actid='34' tips='" + h.more + "' href='javascript:void(0);' class='tips-more-close'></a></div>", v.getElementById("fleet-event")
				.innerHTML = n, n = "";
			var i = null,
				s = 1;
			for (var r in e.msg.fleets)
				for (var a in e.msg.fleets[r]) n += fillEventTableRow(e.msg.fleets[r][a], s), s++, null === i && (i = e.msg.fleets[r][a]);
			for (var r in $("#table-event-list")
				.html(n), e.msg.fleets)
				for (var a in e.msg.fleets[r]) g.timer(e.msg.fleets[r][a].key, e.msg.fleets[r][a].left_time, function() {
					g.send({
						mod: "event",
						xid: 0
					})
				});
			i && (v.getElementById("fleet-event-content")
				.innerHTML = h["miss" + i.mission] + (1 == i.return ? "(" + h.fleetret + ")" : ""), g.timer("fleet-event-countdown", i.left_time, function() {}))
		}, hdl.fleet = function(e) {
			if (1 == e.xid) {
				var t = e.msg.storage - e.msg.consumption,
					n = g.parseTime(e.msg.time);
				v.getElementById("fleet-step2-start-distance")
					.innerHTML = e.msg.distance + "<br />" + h.distance, v.getElementById("speed-value")
					.innerHTML = e.msg.speed, v.getElementById("time-value")
					.innerHTML = n, v.getElementById("consume-value")
					.innerHTML = "<span class='" + (g.planet.deuterium >= e.msg.consumption ? "undermark" : "overmark") + "'>" + e.msg.consumption + "</span>", v.getElementById("capacity-value")
					.innerHTML = "<span class='" + (0 < t ? "undermark" : "overmark") + "'>" + t + "</span>";
				var i = g.flags.fleetMission;
				i.storage = t, i.missions = e.msg.missions, i.time = n, i.consume = e.msg.consumption, i.targetName = e.msg.planetname, i.showStay = e.msg.showstay
			} else 2 == e.xid ? (TweenLite.to(v.getElementById("fleet-steps"), .7, {
				css: {
					marginLeft: 0
				},
				ease: Cubic.easeOut,
				onComplete: function() {
					v.getElementById("fleet-prev-btn")
						.style.display = "none", v.getElementById("fleet-next-btn")
						.innerHTML = h.next, y.setFleetNav(1)
				}
			}), g.flags.fleetSendFlag = !1, g.flags.fleetMission.step = 1, y.resetMission(), g.fadebox(h.sendok), g.send({
				mod: "event",
				xid: 0
			})) : 2 < e.xid && (g.fadebox(h.sendok), g.send({
				mod: "event",
				xid: 0
			}))
		}, hdl.symbol = function(e) {
			if (null === g.flags.newMessageCount || null === g.flags.allMessageCount || g.flags.newMessageCount !== e.msg.flag1 || g.flags.allMessageCount !== e.msg.flag2) {
				var t = document.getElementById("message");
				t.innerHTML = e.msg.flag1 + "/" + e.msg.flag2, t.className = e.msg.flag1 ? "message-on" : "message-off", g.flags.newMessageCount = e.msg.flag1, g.flags.allMessageCount = e.msg.flag2
			}
			1 === e.msg.flag3 && g.send({
				mod: "event",
				xid: 0
			}), 1 === e.msg.flag4 && g.getPlanetList()
		}, hdl.fleetcallback = function(e) {
			g.fadebox(h.callbackok), g.send({
				mod: "event",
				xid: 0
			})
		}, hdl.messagelist = function(e) {
			if ($("#table-message-list tr:not(:first)")
				.remove(), 0 !== e.msg.list.length) {
				for (var t = "", n = 0; n < e.msg.list.length; n++) t += (i = e.msg.list[n], s = void 0, (s = [])
					.push("<tr class='entry'><td><input type='checkbox' class='msg-check' value='" + i.mid + "' /></td>"), s.push("<td>" + (0 == i.from_uid ? h.syssender : i.from_name) + "</td>"), s.push("<td class='link' actid='42' mid='" + i.mid + "'>" + (0 == i.is_read ? "<span style='color:white;'>*</span> " : "") + (0 < i.from_uid ? i.title : locz(i.title)) + "</td>"), s.push("<td class='g2'>" + y.timeToDate(i.send_time) + "</td>"), s.push("<td actid='43' mid='" + i.mid + "'><img class='hand' actid='43' mid='" + i.mid + "' src='img/icons/trash.gif' /></td></tr>"), s.join(""));
				$("#table-message-list")
					.append(t), g.flags.msgCurrentPage = e.msg.page, v.getElementById("message-message-pages")
					.innerHTML = y.getPageList(e.msg.pages, e.msg.page, 46), v.getElementById("table-message-links")
					.style.display = "", v.getElementById("table-message-list")
					.className = "", v.getElementById("table-message-send")
					.className = "hidden", v.getElementById("table-message-links")
					.className = "", v.getElementById("table-message-show")
					.className = "hidden"
			} else v.getElementById("table-message-links")
				.style.display = "none";
			var i, s
		}, hdl.messageshow = function(e) {
			v.getElementById("message-show-sender")
				.innerHTML = 0 == e.msg.from_uid ? h.syssender : e.msg.from_name, v.getElementById("message-show-title")
				.innerHTML = 0 < e.msg.from_uid ? e.msg.title : locz(e.msg.title), v.getElementById("message-show-content")
				.innerHTML = 0 < e.msg.from_uid ? y.strConvert(e.msg.content) : y.msgContentConvert(e.msg.content), v.getElementById("message-show-date")
				.innerHTML = y.timeToDate(e.msg.send_time, !0), 0 < e.msg.from_uid ? v.getElementById("message-show-reply")
				.className = "" : v.getElementById("message-show-reply")
				.className = "hidden", v.getElementById("table-message-list")
				.className = "hidden", v.getElementById("table-message-links")
				.className = "hidden", v.getElementById("table-message-show")
				.className = ""
		}, hdl.messagesend = function(e) {
			g.fadebox(h.mailsendok), v.getElementById("message-send-user")
				.value = "", v.getElementById("message-send-title")
				.value = "", v.getElementById("message-send-text")
				.value = "", v.getElementById("message-show-text")
				.value = ""
		}, hdl.planetrename = function(e) {
			g.planet.planetname = e.msg, v.getElementById("overview-title")
				.innerHTML = e.msg, v.getElementById("float")
				.className = "hidden", v.getElementById("mask")
				.className = "hidden", v.getElementById("float-content")
				.innerHTML = "", g.flags.floatDivShow = !1, g.fadebox(h.str5), g.getPlanetList()
		}, hdl.friends = function(e) {
			if (0 === e.xid || 1 === e.xid) {
				v.getElementById("friends-my-count")
					.innerHTML = e.msg.count, v.getElementById("friends-request-count")
					.innerHTML = e.msg.reqcount;
				var t = {};
				0 === e.xid ? (t.isReq = !1, 0 < e.msg.count ? t.noFriends = !1 : t.noFriends = !0) : (t.isReq = !0, 0 < e.msg.reqcount ? t.noFriends = !1 : t.noFriends = !0), t.list = e.msg.list, g.flags.templateLoaded.friendslist ? g.template["friends-list"](t) : (y.template("friends-list", t), g.flags.templateLoaded.friendslist = !0)
			} else 2 === e.xid ? g.send({
				mod: "friends",
				xid: 0,
				page: 1
			}) : 3 === e.xid && g.send({
				mod: "friends",
				xid: 1,
				page: 1
			})
		}, hdl.friendlist = function(e) {
			v.getElementById("friends-my-count")
				.innerHTML = e.msg.count, v.getElementById("friends-request-count")
				.innerHTML = e.msg.reqcount;
			var t = {
				isReq: !1
			};
			0 < e.msg.count ? t.noFriends = !1 : t.noFriends = !0, t.list = e.msg.list, g.flags.templateLoaded.friendslist ? g.template["friends-list"](t) : (y.template("friends-list", t), g.flags.templateLoaded.friendslist = !0)
		}, hdl.friendreq = function(e) {
			v.getElementById("friends-my-count")
				.innerHTML = e.msg.count, v.getElementById("friends-request-count")
				.innerHTML = e.msg.reqcount;
			var t = {
				isReq: !0
			};
			0 < e.msg.reqcount ? t.noFriends = !1 : t.noFriends = !0, t.list = e.msg.list, g.flags.templateLoaded.friendslist ? g.template["friends-list"](t) : (y.template("friends-list", t), g.flags.templateLoaded.friendslist = !0)
		}, hdl.friendinvite = function(e) {
			var t = {
				lang: h,
				list: e.msg.invited,
				count: e.msg.count,
				desc: h.str135.replace("{invite_link}", e.msg.url)
			};
			g.flags.templateLoaded.friendinvite ? g.template["friends-invite"](t) : (y.template("friends-invite", t), g.flags.templateLoaded.friendinvite = !0)
		}, hdl.frienddel = function(e) {}, hdl.friendapply = function(e) {
			1 === e.xid ? g.fadebox(h.str29) : 6 === e.xid && g.fadebox(h.str30)
		}, hdl.fleetlink = function(e) {
			var t = v.getElementById("fleet-shortcut");
			if (1 < t.options.length)
				for (var n = t.options.length, i = 1; i < n; i++) t.options[1].remove();
			if (0 < (n = e.msg.shortcut.length))
				for (i = 0; i < n; i++) {
					var s = e.msg.shortcut[i];
					t.options.add(new Option(s.name + " [" + s.pos + "]", s.pos + ":" + s.type))
				}
			if (t.value = "", 1 < (t = v.getElementById("fleet-combatunit"))
				.options.length)
				for (i = 1; i <= t.options.length; i++) t.options[i].remove();
			if (0 < (n = e.msg.combatunit.length))
				for (i = 0; i < n; i++) s = e.msg.combatunit[i], t.options.add(new Option(s.alias, s.pos + ":" + s.type + ":" + s.key));
			t.value = "", g.flags.fleetMission.fleetHash = e.msg.fleethash
		}, hdl.fleetunion = function(e) {
			if (0 === e.xid) {
				v.getElementById("union-alias")
					.value = e.msg.alias;
				var t = "";
				for (var n in e.msg.friends) t += "<div actid='61' uid='" + n + "' class='union-invite-item'>" + e.msg.friends[n] + "</div>";
				v.getElementById("union-invite-friends")
					.innerHTML = t, t = "";
				var i = g.planet.uid;
				for (var n in e.msg.invited) t += "<div actid='" + (n == i ? 0 : 61) + "' uid='" + n + "' class='union-invite-item " + (n == i ? "undermark" : "") + "'>" + e.msg.invited[n] + "</div>";
				v.getElementById("union-invite-users")
					.innerHTML = t
			} else 1 === e.xid && (g.fadebox(h.str20), g.click[52](1))
		}, hdl.allianceinfo = function(e) {
			if (0 === e.xid) {
				var t = {
					aid: e.msg.aid,
					useraid: g.planet.aid,
					name: e.msg.name,
					desc: e.msg.desc,
					master: e.msg.master[1],
					count: e.msg.membercount,
					lang: h
				};
				g.flags.templateLoaded.alliancecover ? g.template.alliancecover(t) : (y.template("alliancecover", t), g.flags.templateLoaded.alliancecover = !0), v.getElementById("alliancecover")
					.style.display = "block"
			} else 1 === e.xid ? (g.flags.templateLoaded.alliance ? g.template.alliance(e.msg) : (y.template("alliance", e.msg), g.flags.templateLoaded.alliance = !0), 0 < e.msg.aid && (g.flags.allianceRole = e.msg.role, g.flags.templateLoaded.alliancehome ? g.template["alliance-home"](e.msg) : (y.template("alliance-home", e.msg), g.flags.templateLoaded.alliancehome = !0))) : 2 === e.xid && (g.flags.templateLoaded.alliancehome ? g.template["alliance-home"](e.msg) : (y.template("alliance-home", e.msg), g.flags.templateLoaded.alliancehome = !0))
		}, hdl.alliancemembers = function(e) {
			e.msg.pagination = y.getPageList(e.msg.pages, e.msg.page, 82), e.msg.myrole = g.flags.allianceRole, e.msg.myuid = g.planet.uid, e.msg.lang = h, g.flags.templateLoaded.alliancemembers ? g.template["alliance-members"](e.msg) : (y.template("alliance-members", e.msg), g.flags.templateLoaded.alliancemembers = !0)
		}, hdl.allianceapplicant = function(e) {
			e.msg.pagination = y.getPageList(e.msg.pages, e.msg.page, 87), e.msg.lang = h, g.flags.templateLoaded.allianceapplicant ? g.template["alliance-apply"](e.msg) : (y.template("alliance-apply", e.msg), g.flags.templateLoaded.allianceapplicant = !0)
		}, hdl.alliancekick = function(e) {
			g.fadebox(h.str61), g.send({
				mod: "alliancemembers",
				xid: 0,
				page: 1
			})
		}, hdl.allianceedit = function(e) {
			if (g.fadebox(h.str43), 3 <= e.xid && e.xid <= 7) g.send({
				mod: "allianceinfo",
				xid: 1
			});
			else {
				var t = v.getElementById("alliance-show-" + e.msg);
				t.innerHTML = v.getElementById("alliance-edit-" + e.msg + "-val")
					.value.replace(/\n/g, "<br>"), t.style.display = "inline", v.getElementById("alliance-edit-" + e.msg)
					.style.display = "none", v.getElementById("alliance-icon-" + e.msg)
					.style.display = "inline"
			}
		}, hdl.alliancequit = function(e) {
			g.send({
				mod: "allianceinfo",
				xid: 1
			})
		}, hdl.alliancecreate = function(e) {
			g.send({
				mod: "allianceinfo",
				xid: 1
			})
		}, hdl.alliancemaster = function(e) {
			0 === e.xid || 1 === e.xid ? g.send({
				mod: "alliancemembers",
				xid: 0,
				page: 1
			}) : 2 !== e.xid && 3 !== e.xid || g.send({
				mod: "allianceapplicant",
				xid: 0,
				page: 1
			})
		}, hdl.allianceforum = function(e) {
			e.msg.lang = h, g.flags.templateLoaded.allianceforum ? g.template["alliance-forum"](e.msg) : (y.template("alliance-forum", e.msg), g.flags.templateLoaded.allianceforum = !0)
		}, hdl.alliancejoin = function(e) {
			g.fadebox(h.str69)
		}, hdl.friendapply = function(e) {
			6 === e.xid ? g.fadebox(h.str30) : g.fadebox(h.str29)
		}, hdl.search = function(e) {
			0 === e.msg.length ? v.getElementById("search-results")
				.innerHTML = h.str38 : 2 === e.xid ? g.flags.templateLoaded.searchresult2 ? g.template["search-result2"](e.msg) : (y.template("search-result2", e.msg), g.flags.templateLoaded.searchresult2 = !0) : g.flags.templateLoaded.searchresult1 ? g.template["search-result1"](e.msg) : (y.template("search-result1", e.msg), g.flags.templateLoaded.searchresult1 = !0)
		}, hdl.highscore = function(e) {
			var t;
			v.getElementById("hiscore-content-pages")
				.innerHTML = y.getPageList(e.msg.pages, e.msg.page, 68), e.xid < 5 ? ((t = v.getElementById("highscore-content-player"))
					.style.display = "", v.getElementById("highscore-content-alliance")
					.style.display = "none", $("#highscore-content-player tr:not(:first)")
					.remove()) : ((t = v.getElementById("highscore-content-alliance"))
					.style.display = "", v.getElementById("highscore-content-player")
					.style.display = "none", $("#highscore-content-alliance tr:not(:first)")
					.remove());
			var n = "",
				i = e.msg.ranks.length,
				s = "alt";
			if (e.xid < 5)
				for (var r = 0; r < i; r++) s = "alt" === s ? "" : "alt", (a = e.msg.ranks[r])
					.canmail || (s = "myrank"), n += "<tr class='" + s + "'>", n += "<td>" + a.rank + "</td>", n += "<td>", 0 < a.aid && (n += "<span class='yellowlink' aid='" + a.aid + "' actid='70'>[" + a.alliance + "]</span> "), n += "<span class='link' actid='36' position='" + a.pos + "'>" + a.name + "</span></td>", n += "<td>", a.canmail && (n += "<img class='hand' user='" + a.name + "' actid='45' src='img/icons/mail.gif' />&nbsp;&nbsp;"), a.canreq && (n += "<img class='hand' uid='" + a.uid + "' actid='71' src='img/icons/user.gif' />"), n += "</td>", n += "<td align='right'>", 0 === e.xid ? n += y.addCommas(a.point) : 1 === e.xid ? n += y.addCommas(a.tech) : 2 === e.xid && (n += y.addCommas(a.fleet)), n += "</td>", n += "</tr>";
			else
				for (r = 0; r < i; r++) {
					var a;
					n += "<tr class='" + (s = "alt" === s ? "" : "alt") + "'>", n += "<td>" + (a = e.msg.ranks[r])
						.rank + "</td>", n += "<td><span class='link' actid='70' aid='" + a.aid + "'>" + a.name + "</span></td>", n += "<td>" + a.members + "</td>", n += "<td align='right'>", 5 === e.xid ? n += y.addCommas(a.point) : 6 === e.xid ? n += y.addCommas(a.tech) : 7 === e.xid && (n += y.addCommas(a.fleet)), n += "</td>", n += "</tr>"
				}
			$(t)
				.append(n)
		}, hdl.setup = function(e) {
			g.fadebox(h.str91), e.msg.holiday && window.location.reload()
		}, hdl.phalanx = function(e) {
			var t = "";
			if (e.msg.nofleets) t = h.str102, v.getElementById("float-content")
				.innerHTML = t;
			else {
				t += "<table class='table' width='100%'>";
				for (var n = 0; n < e.msg.fleets.length; n++) t += fillPhalanxTableRow(e.msg.fleets[n], n);
				for (t += "</table>", v.getElementById("float-content")
					.innerHTML = t, n = 0; n < e.msg.fleets.length; n++) {
					var i = "phalanx-" + e.msg.fleets[n].key;
					g.timer(i, e.msg.fleets[n].left_time, function() {}), g.flags.floatCountdownIds.push(i)
				}
			}
			y.showFloatLayer(h.str103, "float-phalanx")
		}, hdl.jumpgate = function(e) {
			0 === e.xid ? (e.msg.lang = h, e.msg.ship = g.planet.ship, g.flags.templateLoaded.jumpgate ? g.template.jumpgate(e.msg) : (y.template("jumpgate", e.msg), g.flags.templateLoaded.jumpgate = !0), y.showFloatLayer(h.m43, "float-jumpgate"), 0 < e.msg.lefttime ? (g.timer("jumpgate-countdown", e.msg.lefttime, function() {}), g.flags.floatCountdownIds.push("jumpgate-countdown")) : v.getElementById("jumpgate-countdown")
				.innerHTML = "") : 1 === e.xid && (y.hideFloatLayer(), g.fadebox(h.str110))
		}, hdl.buildingdata = function(e) {
			var t = {
				bid: e.msg.bid,
				lang: h,
				div1: y.getRequireData(e.msg.require),
				div2: y.getRequireData(e.msg.apply),
				desc: h["m" + e.msg.bid + "desc"],
				tech: y.techDataToTable(e.msg)
			};
			g.flags.templateLoaded.buildingdata ? g.template["building-data"](t) : (y.template("building-data", t), g.flags.templateLoaded.buildingdata = !0), y.showFloatLayer(h["m" + e.msg.bid], "float-jumpgate")
		}, hdl.officer = function(e) {
			0 === e.xid && (g.getUserPlanetInfo(-5), g.fadebox(h.str114))
		}, hdl.tutorialend = function() {
			window.location.reload()
		}, hdl.tutorial = function(e) {
			var t = e.xid;
			v.getElementById("tutorial-steps")
				.innerHTML = tutorialStepHtml(t, e.msg.tutorial), v.getElementById("tutorial-title")
				.innerHTML = h.task + t + " - " + h["tutorial" + t + "title"], v.getElementById("tutorial-desc")
				.innerHTML = h["tutorial" + t + "desc"], v.getElementById("tutorial-image")
				.src = "img/tutorial/" + t + ".gif";
			var n = tutorialTaskHtml(t, e.msg.task);
			5 == t && (n = n.replace("({vericode})", e.msg.code)), v.getElementById("tutorial-tasks")
				.innerHTML = n;
			var i = v.getElementById("tutorial-reward");
			i.innerHTML = h["tutorial" + t + "reward"], e.msg.tutorial[t] ? i.className = "undermark" : i.className = "overmark"
		}, hdl.cost = function(e) {
			if (0 === e.msg.did)
				if (2 === e.xid) {
					if (e.msg.full) return void g.msgbox(h.str120);
					for (var t = "<select onchange='SNS.util.setBuyResourceFunc(this.value, \"" + e.msg.res + "\");' class='fleet-select'>", n = 0; n < e.msg.price.length; n++) {
						var i = e.msg.price[n];
						if (t += "<option value='" + i.count + "'>" + h[e.msg.res] + i.count + "(" + i.percent + ") " + h.darkmatter + ":" + i.darkmatter + "</option>", 0 === n) {
							var s = i.count + "";
							g.confirmFunc = function() {
								g.send({
									mod: "cost",
									xid: 2,
									did: 1,
									res: e.msg.res,
									count: s
								})
							}
						}
					}
					t += "</select>", g.confirmbox(h[e.msg.item] + " " + t)
				} else if (3 === e.xid) {
				for (var n in t = "<select onchange='SNS.util.setBuyPointFunc(this.value);' class='fleet-select'>", e.msg.point) {
					var r = e.msg.point[n];
					t += "<option value='" + n + "'>" + n + " " + h.darkmatter + ":" + r + "</option>", 1 == n && (s = n + "", g.confirmFunc = function() {
						g.send({
							mod: "cost",
							xid: 3,
							did: 1,
							count: s
						})
					})
				}
				t += "</select>", g.confirmbox(h[e.msg.item] + " " + t)
			} else g.confirmbox(h[e.msg.item] + "," + h.str116 + e.msg.price + h.darkmatter);
			else 0 === e.xid ? (g.getUserPlanetInfo(-100), g.fadebox(h.str119)) : 1 === e.xid ? (g.getUserPlanetInfo(0), g.fadebox(h.str118)) : 2 === e.xid ? (g.getUserPlanetInfo(-100), g.fadebox(h.str121)) : 3 === e.xid ? (g.fadebox(h.str122), g.send({
				mod: "allianceinfo",
				xid: 1
			})) : e.xid
		}, hdl.productivity = function(e) {
			if (0 === e.xid) {
				var t = e.msg;
				t.lang = h, t.m1.select = y.getOptionHtml(e.msg.m1.percent), t.m2.select = y.getOptionHtml(e.msg.m2.percent), t.m3.select = y.getOptionHtml(e.msg.m3.percent), t.m4.select = y.getOptionHtml(e.msg.m4.percent), t.m12.select = y.getOptionHtml(e.msg.m12.percent), t.m212.select = y.getOptionHtml(e.msg.m212.percent), t.yield.metal[1] = y.addCommas(t.yield.metal[1]), t.yield.metal[2] = y.addCommas(t.yield.metal[2]), t.yield.crystal[1] = y.addCommas(t.yield.crystal[1]), t.yield.crystal[2] = y.addCommas(t.yield.crystal[2]), t.yield.deuterium[1] = y.addCommas(t.yield.deuterium[1]), t.yield.deuterium[2] = y.addCommas(t.yield.deuterium[2]), g.flags.templateLoaded.productivity ? g.template.productivity(t) : (y.template("productivity", t), g.flags.templateLoaded.productivity = !0), y.showFloatLayer(h.str142, "float-friends")
			} else g.fadebox(h.str43), g.getUserPlanetInfo(0), y.hideFloatLayer()
		}, hdl.battlereport = function(e) {
			y.showFloatLayer(h.str146, "float-battlereport"), v.getElementById("float-content")
				.innerHTML = e.msg.data
		}, hdl.freeresource = function(e) {
			g.msgbox(h.str167), g.getUserPlanetInfo(0)
		}
	}(), SNS.countdown = function(e, t, n) {
		SNS.countdown.check(e), this.id = e, this.dom = document.getElementById(e), this.dom.innerHTML = "loading", this.dom.style.visibility = "visible", this.dom.style.display = "", this.callback = n, this.time = t
	}, SNS.countdown.instance = {}, SNS.countdown.check = function(e) {
		for (var t in this.instance) void 0 === this.instance[t].time ? delete this.instance[t] : t === e && (this.instance[t].clear(), delete this.instance[t])
	}, SNS.countdown.prototype.timerId = {}, SNS.countdown.prototype.start = function() {
		this.timerId[this.id] = setInterval(this.getRunInstance(), 1e3)
	}, SNS.countdown.prototype.getRunInstance = function() {
		var e = this;
		return function() {
			if (e.time--, e.time < 0) return e.callback(), void e.clear();
			e.dom.innerHTML = SNS.parseTime(e.time)
		}
	}, SNS.countdown.prototype.clear = function() {
		clearInterval(this.timerId[this.id]), this.dom.innerHTML = "", this.dom.style.display = "none", this.dom.style.visibility = "hidden", delete this.dom, delete this.timerId[this.id], delete this.callback, delete this.id, delete this.time
	}, SNS.timer = function(e, t, n) {
		this.countdown.instance[e] = new this.countdown(e, t, n), this.countdown.instance[e].start()
	};